我正在从TeamCity运行maven构建,并使用build.vcs.number将Subversion修订版写入我的清单。在使用Subversion作为VCS的任何Maven构建中,TeamCity添加
-Dbuild.vcs.number=1234
到maven命令行,其中1234是正在构建的分支中的最新修订版。
然后在我的pom.xml中,我有
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
</manifest>
<manifestEntries>
<build>${build.vcs.number}</build>
</manifestEntries>
</archive>
</configuration>
</plugin>
这一切正常,直到我运行Maven release:perform(也来自TeamCity),此时$ {build.vcs.number}变为null,即使我可以在TeamCity构建日志中看到此属性已传入在命令行。
maven-release-plugin文档暗示Maven在执行目标期间的某个时刻运行分叉进程 - 这就是我遇到问题的原因吗?
有没有办法可以确保将此特定属性传递给该分叉进程?
答案 0 :(得分:5)
-Darguments=-Dbuild.vcs.number=1234
有一个分叉的发布过程,以确保它具有干净的可重现命令行,因此您需要指定要传递的内容。
理想情况下,您在Pom上配置发布插件以通过属性,但是没有使用覆盖(除非有人已经禁用了Pom中的覆盖...他们会被卡住,直到您重新启用它。< / p>
注意:如果有多个属性或带有空格的属性
,请密切注意引用