我还需要提交一些额外的文件(由 Maven Replacer 插件更改)。我是通过以下方式做到的:
首先我配置了Maven Release 插件来执行额外的目标:
<plugin>
<artifactId>maven-release-plugin</artifactId>
<version>2.5.3</version>
<configuration>
<preparationGoals>-Prelease -DreplacerVersion="${releaseVersion}" clean replacer:replace scm:checkin verify</preparationGoals>
<completionGoals>-Prelease -DreplacerVersion="${developmentVersion}" clean replacer:replace scm:checkin verify</completionGoals>
</configuration>
</plugin>
release
profile 定义了 Maven SCM 插件的配置
replacerVersion
Maven Replacer 插件使用参数在某些文件中设置正确的版本
clean
是由 Maven Release 插件运行的标准目标(默认clean verify
:)
replacer:replace
目标负责修改文件
scm:checkin
确实提交并推送
verify
是由 Maven Release 插件运行的标准目标(默认clean verify
:)
接下来我配置了 Maven Replacer 插件:
<plugin>
<groupId>com.google.code.maven-replacer-plugin</groupId>
<artifactId>replacer</artifactId>
<version>1.5.3</version>
<configuration>
<includes>
<include>${basedir}/file1.txt</include>
<include>${basedir}/file2.txt</include>
</includes>
<replacements>
<replacement>
<token><![CDATA[<pattern>.*</pattern>]]></token>
<value><![CDATA[<pattern>${replacerVersion}</pattern>]]></value>
</replacement>
</replacements>
</configuration>
</plugin>
${replacerVersion}
允许使用相同的配置从开发更改为发布,然后从发布更改为下一个开发版本。
最后我定义了我想使用的Maven SCM 插件版本:
<plugin>
<artifactId>maven-scm-plugin</artifactId>
<version>1.9.5</version>
</plugin>
并在配置文件中配置它release
(我在配置文件中定义它以防止在非发布构建期间意外提交):
<profile>
<id>release</id>
<build>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-scm-plugin</artifactId>
<configuration>
<message>[maven-scm-plugin] set ${replacerVersion} version in files</message>
<includes>file1.txt, file2.txt</includes>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</profile>
感谢执行命令后:
mvn release:prepare -DdevelopmentVersion=1.2.1-SNAPSHOT -DreleaseVersion=1.2.0 -Dtag=1.2.0
我看到 4 个提交:
- [maven-scm-plugin] 在文件中设置 1.2.0 版本
- [maven-release-plugin] 准备发布 1.2.0
- [maven-scm-plugin] 在文件中设置 1.2.1-SNAPSHOT 版本
- [maven-release-plugin] 为下一次开发迭代做准备