在maven项目的模块中更新父版本

时间:2016-09-12 11:27:20

标签: java maven teamcity pom.xml

我有一个奇怪的场景,我有一个项目" Y"它有一个模块" X"以及其他一些模块。

X是项目Y的一部分,但它没有作为该项目的模块链接。因此,每次发布更新版本的Y时,都需要手动更新X中的父版本。

我需要以下列方式更新Y项目: a)每次发布Y项目时,X中的父项目版本应由TeamCity自动更新(与其他模块类似)

b)X不得是Y分布的一部分

c)一旦部署在TeamCity中,就不应该从X运行测试(它们应该使用Integration测试和发布版本运行)

1 个答案:

答案 0 :(得分:8)

的版本:更新父

如果您在项目的根目录X打开终端,则可以使用versions:update-parent将其父版本更新为latest

$ mvn versions:update-parent -DallowSnapshots=true

您可以从TeamCity执行此命令,然后将更改提交到pom。这可以在构建Y时触发,您甚至可以提供版本(必须是listrange):

$ mvn versions:update-parent -DparentVersion=[1.0.0,1.0.1]    //or [1.0.0,1.5.0)

文档

请参阅versions-maven-plugin的文档,尤其是:

  • 版本:更新父

  

更新项目的父节,以便它引用   最新版本。例如,如果您使用公司根   POM,如果您需要确保使用的话,这个目标会有所帮助   最新版本的企业根POM。

  • 版本:设置

  

可用于从命令行设置项目版本。

  • 版本:提交

  

删除pom.xml.versionsBackup

  • 版本:更新子模块

  

更新项目子模块的父节点   version与当前项目的版本匹配。例如,如果   你有一个聚合器pom,它也是项目的父级   它聚合,子和父版本离开   同步,这个mojo可以帮助修复子模块的版本。 (注意   您可能需要使用-N选项调用Maven才能运行它   目标,如果您的项目如此糟糕,以至于无法构建,因为   版本不匹配)。