我有一个奇怪的场景,我有一个项目" Y"它有一个模块" X"以及其他一些模块。
X是项目Y的一部分,但它没有作为该项目的模块链接。因此,每次发布更新版本的Y时,都需要手动更新X中的父版本。
我需要以下列方式更新Y项目: a)每次发布Y项目时,X中的父项目版本应由TeamCity自动更新(与其他模块类似)
b)X不得是Y分布的一部分
c)一旦部署在TeamCity中,就不应该从X运行测试(它们应该使用Integration测试和发布版本运行)
答案 0 :(得分:8)
如果您在项目的根目录X
打开终端,则可以使用versions:update-parent
将其父版本更新为latest
:
$ mvn versions:update-parent -DallowSnapshots=true
您可以从TeamCity执行此命令,然后将更改提交到pom。这可以在构建Y
时触发,您甚至可以提供版本(必须是list
或range
):
$ 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才能运行它 目标,如果您的项目如此糟糕,以至于无法构建,因为 版本不匹配)。