Apache Maven Release Plugin插件详解

Release插件是Apache Maven团队提供的官方插件,最终版本是2015-10-17发布的2.5.3,能够为项目代码库打tag,并将项目代码库中的代码发布到SCM的新版本。

1. 使用Release插件的前提条件

1) 明确使用的maven-release-plugin版本,当前为2.5.3

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-release-plugin</artifactId>
      <version>2.5.3</version>
      <configuration>
        ...
      </configuration>
    </plugin>
    ...

2) 在POM中配置scm的developerConnection

<scm>
  <developerConnection>scm:git:ssh://gerrit.mycompany.com:29418/myproject</developerConnection>
</scm>

2. Release插件的Maven goals

1) release:clean

2) release:prepare

基本过程:

  • 生成release.properties文件
  • 检查本地项目代码中是否有未提交的modifications
  • 检查项目的POM依赖或插件是否有SNAPSHOT版本
  • 更新POM,将项目的version从*-SNAPSHOT改为用户输入的发布版本(提示用户输入)
  • 确定项目tag(tag名提示用户输入)

默认tag格式为@{project.artifactId}-@{project.version},也可以配置<tagNameFormat>以设置tag格式。

<configuration>
    <tagNameFormat>v@{project.version}</tagNameFormat>
</configuration>
  • 更新POM,转换POM中的SCM信息,包括更新tag
  • 执行<preparationGoals>设置的goals

默认为clean verify,即执行mvn clean verify,也可以配置<preparationGoals>。

<configuration>
    <preparationGoals>clean verify</preparationGoals>
</configuration>

执行期间,对项目代码进行单元测试(要跳过单元测试,则mvn -Darguments="-DskipTests" ...)。

  • 验证成功,第一次提交POM修改,并push到Git库的refs/heads/master

git add -- mymodule\pom.xml pom.xml
git rev-parse --show-toplevel
git status --porcelain .
git commit --verbose -F C:\Users\...\Temp\maven-scm-1044264625.commit mymodule\pom.xml pom.xml
git symbolic-ref HEAD
git push ssh://gerrit.mycompany.com:29418/myproject refs/heads/master:refs/heads/master

  • 为当前项目打tag,并push到Git库的refs/tags/my_tag_name

git tag -F C:\Users\...\Temp\maven-scm-7417013.commit myproject-1.0.1
git push ssh://gerrit.mycompany.com:29418/myproject refs/tags/myproject-1.0.1

  • 为项目的version产生一个新的开发版本*-SNAPSHOT(提示用户输入)
  • 更新POM为开发版本,并将更新后的POM再次提交到Git库

git add -- mymodule\pom.xml pom.xml
git rev-parse --show-toplevel
git status --porcelain .
git commit --verbose -F C:\Users\...\Temp\maven-scm-1044264625.commit mymodule\pom.xml pom.xml
git symbolic-ref HEAD
git push ssh://gerrit.mycompany.com:29418/myproject refs/heads/master:refs/heads/master

release:prepare的可配置的参数:

  • username, 访问SCM的用户名
  • password, 访问SCM的密码
  • tag或releaseLabel, 使用的SCM tag
  • tagNameFormat, 默认值@{project.artifactId}-@{project.version}
  • tagBase, SCM库中tag的基础目录
  • scmCommentPrefix, 默认值[maven-release-plugin] ,所有SCM修改的消息前缀
  • pushChanges, 默认值true
  • resume, 默认值true
  • autoVersionSubmodules, 默认值false,提示为各个子模块输入版本;如果值true,表示所有子模块采用与父模块相同的版本
  • releaseVersion, 要发布的版本
  • developmentVersion, 本地工作目录的下一个开发版本
  • preparationGoals, 默认值clean verify,在转换到发布版本之后,但是在第一次commit之前执行
  • completionGoals, 没有默认值,在转换到下一个开发版本之后,但是在第二次commit之前执行
  • generateReleasePoms, 默认值false,过时了
  • useEditMode, 默认值false,进入SCM的修改模式
  • updateDependencies, 默认值true,更新依赖版本为下一个开发版本
  • addSchema, 默认值true
  • commitByProject,
  • ignoreSnapshots, 默认值false,
  • allowReleasePluginSnapshot, 默认值false,仅用于插件本身的开发测试
  • checkModificationExcludeList,
  • updateWorkingCopyVersions, 默认值true,更新工作目录的版本为developmentVersion值
  • waitBeforeTagging, 默认值0,等待创建tag的时间,单位秒
  • remoteTagging, 默认值true,目前只对SCM, SVN有效。
  • suppressCommitBeforeTag, 默认值false,tag创建完成之前拒绝提交修改,remoteTagging=false才有效
  • dryRun, 默认false
  • projectVersionPolicyId, 默认值default

3) release:prepare-with-pom

功能类似于release:prepare,但需要存在一个项目的已有发布构件,从而能够生成release-pom.xml文件

4) release:perform

基本过程:

  • 依赖于release:prepare阶段生成的release.properties文件
  • 基于SCM的URL检出prepare阶段刚刚打标签的代码,可以带一个可选的tag,如:
<scm>
    <url>scm:git:ssh://gerrit.mycompany.com:29418/myproject</url>
    <tag>myproject-1.0.1</tag>
</scm>
  • 执行指定的Maven goals

默认为deploy site-deploy,将项目代码发布到SCM库中。

<configuration>
    <goals>deploy</goals>
</configuration>

  • 引用release:clean,删除release.properties等发布过程文件

5) release:stage

  • 功能类似于release:perform,但专用于“预发布”
  • 需要指定stagingRepository参数,即预发布库
  • workingDirectory参数也是必须的,但其有默认值${project.build.directory}/checkout
  • 预发布成功后,将“预发布库”复制到“发布库”,即从stage库到release库
  • 保留release.properties等发布过程文件
  • 预发布出错可以回滚,执行release:rollback

6) release:rollback

7) release:branch

  • 创建一个新分支

命令:mvn release:branch -DbranchName=my-branch

8) release:update-versions

3. Maven项目的发布过程

在POM中配置了Release插件的Maven项目,其发布过程默认即包含release:prepare和release:perform两大步。如前所述,实际上就是在执行mvn clean verify deploy site-deploy

4. 非交互式模式的发布

从属性文件release.properties中读取发布参数,进行无人值守的自动发布。

命令:
mvn -B release:prepare release:perform

mvn --batch-mode release:prepare release:perform

5. 正式发布前的Dry Run模式

在正式发布之前,模拟执行发布,保留发布过程中的文件,以检查输出的中间结果。
命令:mvn release:prepare -DdryRun=true

此后,要正式执行发布,还需要先清除中间结果文件,然后再执行正式的发布。
命令:mvn release:clean release:prepare release:perform

参考链接:

http://maven.apache.org/plugins/maven-release-plugin/
https://github.com/apache/maven-release/

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
我可以提供一些关于tomcat9-maven-plugin插件的信息。该插件是一个Apache Maven插件,可用于管理Apache Tomcat 9容器。它可以自动化任务,例如:编译,测试,打包和部署。tomcat9-maven-plugin是一个Maven插件,它可以帮助你将你的Java Web应用程序打包并部署到Tomcat 9服务器上。 使用该插件,你可以在Maven构建过程中自动化部署你的应用程序。插件提供了一组配置选项,包括Tomcat服务器的URL和管理员凭据,以及应用程序的名称和上下文路径。 要使用该插件,你需要在你的Maven项目的pom.xml文件中添加插件配置。以下是一个示例配置: ``` <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat9-maven-plugin</artifactId> <version>3.0.0-M5</version> <configuration> <url>http://localhost:8080/manager/text</url> <username>admin</username> <password>password</password> <server>TomcatServer</server> <path>/myapp</path> </configuration> </plugin> ``` 该配置指定了Tomcat服务器的URL、管理员凭据、服务器ID、应用程序上下文路径等信息。要使用该插件,你需要先确保Tomcat服务器已经启动,并且管理员凭据正确。然后,在Maven构建过程中执行`mvn tomcat9:deploy`命令,就可以自动部署应用程序到Tomcat服务器上了。 除了部署应用程序,该插件还提供了其他功能,比如启动和停止Tomcat服务器、重载Web应用程序等。你可以在插件文档中查找更多信息。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值