準備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相同的版本,則可以設置autoVersionSubmodules
爲true
。現在,您將被要求僅輸入一次發佈版本和下一個開發版本。
生成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