Maven Prepare a Release

準備Release

準備Release通常需要以下Release階段:

  • 檢查項目源中是否有未提交的更改
  • 檢查是否有SNAPSHOT版本依賴
  • 將POM中的版本從x-SNAPSHOT更改爲新版本(即執行目標時將提示您需要使用的版本)
  • 轉換POM中的SCM信息爲標籤地址
  • 對修改的POM運行項目測試,以確認一切正常工作
  • 提交修改後的POM
  • 給SCM中的代碼打新的版本名稱tag(將被提示)
  • 將POM中的版本更改爲新值y-SNAPSHOT(將被提示)
  • 提交修改後的POM

要準備一個Release需執行以下命令:

mvn release:prepare

注意:如果發生錯誤或者取消進程,則再次運行該命令將從最後一個停止的位置開始。

如果您想重新啓動,請使用:

mvn release:prepare -Dresume=false

或者,您可以使用:

mvn release:clean release:prepare

注意:如果對源文件進行了任何更改,則可能需要在重新啓動準備過程之前還原它們。你可以使用release:rollback插件來做。

多模塊項目

系統將提示您輸入項目的每個模塊的版本號。如果您希望每個模塊都具有與父POM相同的版本,則可以設置autoVersionSubmodulestrue。現在,您將被要求僅輸入一次發佈版本和下一個開發版本。

生成Release POM

可以爲每個項目生成一個release-pom.xml文件,包含在release時完全解決的項目記錄以供以後使用。從2.0版本開始,這需要調用另一個目標:

mvn release:prepare-with-pom

此目標相當於release:prepare目標,除了它需要項目預構建以存在以正確填充release-pom.xml文件。

覆蓋默認的標籤名稱格式

默認情況下,如果不指定標記名稱,則會建議使用默認的artifactId-version標籤名稱(如果以非交互方式運行)。

您可以通過傳遞tag屬性來指定要從命令行使用的確切標籤名稱,但是如果要生成標記名稱,但只是更改默認模式,則可以使用tagNameFormat配置選項。

例如,要使標籤名稱默認爲版本號,以v爲前綴,您可以像這樣配置您的pom:

<project>
  [...]
  <build>
    [...]
    <plugins>
      [...]
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-release-plugin</artifactId>
        <version>2.5.3</version>
        <configuration>
          <tagNameFormat>v@{project.version}</tagNameFormat>
        </configuration>
      </plugin>
      [...]
    </plugins>
    [...]
  </build>
  [...]
</project>

tagNameFormat使用@{and}作爲分隔符,以確保在版本轉換髮生之前,默認的Maven屬性插值不會替換值。

支持以下屬性:

  • project.groupId 對應於項目的groupId。
  • project.artifactId 對應於項目的artifactId。
  • project.version 對應於項目的發行版本。

project.前綴是可選的,可以省略。


以下爲實際操作輸出樣例:

/usr/lib/jvm/jdk1.8.0_45/bin/java -Dmaven.home=/opt/idea-IC-145.1617.8/plugins/maven/lib/maven3 -Dclassworlds.conf=/opt/idea-IC-145.1617.8/plugins/maven/lib/maven3/bin/m2.conf -Didea.launcher.port=7535 -Didea.launcher.bin.path=/opt/idea-IC-145.1617.8/bin -Dfile.encoding=UTF-8 -classpath /opt/idea-IC-145.1617.8/plugins/maven/lib/maven3/boot/plexus-classworlds-2.4.jar:/opt/idea-IC-145.1617.8/lib/idea_rt.jar com.intellij.rt.execution.application.AppMain org.codehaus.classworlds.Launcher -Didea.version=2016.1.3 org.apache.maven.plugins:maven-release-plugin:2.5.3:prepare
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building auto-deployment 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-release-plugin:2.5.3:prepare (default-cli) @ auto-deployment ---
[INFO] Verifying that there are no local modifications...                        步驟1: 檢查項目源中是否有未提交的更改
[INFO]   ignoring changes on: **/pom.xml.releaseBackup, **/pom.xml.next, **/pom.xml.tag, **/pom.xml.branch, **/release.properties, **/pom.xml.backup
[INFO] Executing: /bin/sh -c cd /home/user/Workspace/git-study/auto-deployment && git rev-parse --show-toplevel
[INFO] Working directory: /home/user/Workspace/git-study/auto-deployment
[INFO] Executing: /bin/sh -c cd /home/user/Workspace/git-study/auto-deployment && git status --porcelain .
[INFO] Working directory: /home/user/Workspace/git-study/auto-deployment
[INFO] Checking dependencies and plugins for snapshots ...                                        步驟2: 檢查是否有SNAPSHOT版本依賴
What is the release version for "auto-deployment"? (com.augmentum.study:auto-deployment) 1.0: :   步驟3: 將POM中的版本從x-SNAPSHOT更改爲新版本
What is SCM release tag or label for "auto-deployment"? (com.augmentum.study:auto-deployment) v1.0: :  步驟4: 轉換POM中的SCM信息爲標籤地址
What is the new development version for "auto-deployment"? (com.augmentum.study:auto-deployment) 1.1-SNAPSHOT: : 
[INFO] Transforming 'auto-deployment'...
[INFO] Not generating release POMs
[INFO] Executing goals 'clean verify'...                                                          步驟5: 對修改的POM運行項目測試,以確認一切正常工作
[WARNING] Maven will be executed in interactive mode, but no input stream has been configured for this MavenInvoker instance.
[INFO] [INFO] Scanning for projects...
[INFO] [INFO]                                                                         
[INFO] [INFO] ------------------------------------------------------------------------
[INFO] [INFO] Building auto-deployment 1.0
[INFO] [INFO] ------------------------------------------------------------------------
[INFO] [INFO] 
[INFO] [INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ auto-deployment ---
[INFO] [INFO] Deleting /home/user/Workspace/git-study/auto-deployment/target
[INFO] [INFO] 
[INFO] [INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ auto-deployment ---
[INFO] [debug] execute contextualize
[INFO] [INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] [INFO] skip non existing resourceDirectory /home/user/Workspace/git-study/auto-deployment/src/main/resources
[INFO] [INFO] 
[INFO] [INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ auto-deployment ---
[INFO] [INFO] Compiling 1 source file to /home/user/Workspace/git-study/auto-deployment/target/classes
[INFO] [INFO] 
[INFO] [INFO] --- maven-resources-plugin:2.5:testResources (default-testResources) @ auto-deployment ---
[INFO] [debug] execute contextualize
[INFO] [INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] [INFO] skip non existing resourceDirectory /home/user/Workspace/git-study/auto-deployment/src/test/resources
[INFO] [INFO] 
[INFO] [INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ auto-deployment ---
[INFO] [INFO] Compiling 1 source file to /home/user/Workspace/git-study/auto-deployment/target/test-classes
[INFO] [INFO] 
[INFO] [INFO] --- maven-surefire-plugin:2.10:test (default-test) @ auto-deployment ---
[INFO] [INFO] Surefire report directory: /home/user/Workspace/git-study/auto-deployment/target/surefire-reports
[INFO] 
[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running com.augmentum.study.AppTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.011 sec
[INFO] 
[INFO] Results :
[INFO] 
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO] 
[INFO] [INFO] 
[INFO] [INFO] --- maven-jar-plugin:2.3.2:jar (default-jar) @ auto-deployment ---
[INFO] [INFO] Building jar: /home/user/Workspace/git-study/auto-deployment/target/auto-deployment-1.0.jar
[INFO] [INFO] ------------------------------------------------------------------------
[INFO] [INFO] BUILD SUCCESS
[INFO] [INFO] ------------------------------------------------------------------------
[INFO] [INFO] Total time: 2.832s
[INFO] [INFO] Finished at: Fri May 26 15:32:00 CST 2017
[INFO] [INFO] Final Memory: 20M/143M
[INFO] [INFO] ------------------------------------------------------------------------
[INFO] Checking in modified POMs...
[INFO] Executing: /bin/sh -c cd /home/user/Workspace/git-study/auto-deployment && git add -- pom.xml    步驟6: 提交修改後的POM
[INFO] Working directory: /home/user/Workspace/git-study/auto-deployment
[INFO] Executing: /bin/sh -c cd /home/user/Workspace/git-study/auto-deployment && git rev-parse --show-toplevel
[INFO] Working directory: /home/user/Workspace/git-study/auto-deployment
[INFO] Executing: /bin/sh -c cd /home/user/Workspace/git-study/auto-deployment && git status --porcelain .
[INFO] Working directory: /home/user/Workspace/git-study/auto-deployment
[INFO] Executing: /bin/sh -c cd /home/user/Workspace/git-study/auto-deployment && git commit --verbose -F /tmp/maven-scm-357213871.commit pom.xml
[INFO] Working directory: /home/user/Workspace/git-study/auto-deployment
[INFO] Executing: /bin/sh -c cd /home/user/Workspace/git-study/auto-deployment && git symbolic-ref HEAD
[INFO] Working directory: /home/user/Workspace/git-study/auto-deployment
[INFO] Executing: /bin/sh -c cd /home/user/Workspace/git-study/auto-deployment && git push [email protected]:****/git-study.git refs/heads/release/1.0:refs/heads/release/1.0
[INFO] Working directory: /home/user/Workspace/git-study/auto-deployment
[INFO] Tagging release with the label v1.0...                                                            步驟7: 給SCM中的代碼打新的版本名稱tag
[INFO] Executing: /bin/sh -c cd /home/user/Workspace/git-study/auto-deployment && git tag -F /tmp/maven-scm-258879925.commit v1.0
[INFO] Working directory: /home/user/Workspace/git-study/auto-deployment
[INFO] Executing: /bin/sh -c cd /home/user/Workspace/git-study/auto-deployment && git push [email protected]:****/git-study.git refs/tags/v1.0
[INFO] Working directory: /home/user/Workspace/git-study/auto-deployment
[INFO] Executing: /bin/sh -c cd /home/user/Workspace/git-study/auto-deployment && git ls-files
[INFO] Working directory: /home/user/Workspace/git-study/auto-deployment
[INFO] Transforming 'auto-deployment'...
[INFO] Not removing release POMs
[INFO] Checking in modified POMs...
[INFO] Executing: /bin/sh -c cd /home/user/Workspace/git-study/auto-deployment && git add -- pom.xml     步驟8: 將POM中的版本更改爲新值y-SNAPSHOT
[INFO] Working directory: /home/user/Workspace/git-study/auto-deployment
[INFO] Executing: /bin/sh -c cd /home/user/Workspace/git-study/auto-deployment && git rev-parse --show-toplevel
[INFO] Working directory: /home/user/Workspace/git-study/auto-deployment
[INFO] Executing: /bin/sh -c cd /home/user/Workspace/git-study/auto-deployment && git status --porcelain .
[INFO] Working directory: /home/user/Workspace/git-study/auto-deployment
[INFO] Executing: /bin/sh -c cd /home/user/Workspace/git-study/auto-deployment && git commit --verbose -F /tmp/maven-scm-252955280.commit pom.xml
[INFO] Working directory: /home/user/Workspace/git-study/auto-deployment
[INFO] Executing: /bin/sh -c cd /home/user/Workspace/git-study/auto-deployment && git symbolic-ref HEAD  步驟9: 提交修改後的POM
[INFO] Working directory: /home/user/Workspace/git-study/auto-deployment
[INFO] Executing: /bin/sh -c cd /home/user/Workspace/git-study/auto-deployment && git push [email protected]:****/git-study.git refs/heads/release/1.0:refs/heads/release/1.0
[INFO] Working directory: /home/user/Workspace/git-study/auto-deployment
[INFO] Release preparation complete.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 39.751s
[INFO] Finished at: Fri May 26 15:32:22 CST 2017
[INFO] Final Memory: 9M/150M
[INFO] ------------------------------------------------------------------------

Process finished with exit code 0

參考鏈接:Prepare a Release & Sample configuration

發佈了103 篇原創文章 · 獲贊 19 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章