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 git@github.com:****/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 git@github.com:****/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 git@github.com:****/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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值