【问题标题】:Update parent version in a maven project's module在 Maven 项目的模块中更新父版本
【发布时间】:2017-01-19 19:55:10
【问题描述】:

我有一个奇怪的场景,我有一个项目“Y”,它有一个模块“X”和其他一些模块。

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

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

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

c)一旦部署在 TeamCity 中,它就不应从 X 运行测试(它们应与集成测试和发布版本一起运行)

【问题讨论】:

    标签: java maven teamcity pom.xml


    【解决方案1】:

    versions:update-parent

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

    $ mvn versions:update-parent -DallowSnapshots=true
    

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

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

    文档

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

    • versions:update-parent

    更新项目的父部分,使其引用 最新可用版本。例如,如果您使用公司根 POM,如果您需要确保使用 公司根 POM 的最新版本。

    • 版本:设置

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

    • 版本:提交

    删除 pom.xml.versionsBackup

    • versions:update-child-modules

    更新项目子模块的父部分,以便 version 匹配当前项目的版本。例如,如果 你有一个聚合器 pom,它也是项目的父级 它聚合并且子版本和父版本退出 同步,这个 mojo 可以帮助修复子模块的版本。 (笔记 您可能需要使用 -N 选项调用 Maven 才能运行它 如果您的项目被严重破坏以至于无法构建,则目标是因为 版本不匹配)。

    【讨论】:

    • 感谢 Alex 的回复。因为我对 Maven 很陌生,想将它嵌入到 pom.xml 中。 xml。我想知道是否有任何与命令行参数“mvn versions:update-parent -DallowSnapshots=true”等效的 pom.xml?以及如何在父标签内引用更新的父版本?
    • 我不确定你的意思。这是maven的方式,你需要执行这个maven命令来自动更新pom
    • 好的.....只是想告诉X是项目Y的一部分,但没有作为模块添加到项目Y。在这种情况下,我将如何验证X模块是否正在接受更新版本的 Y 吗?另外,我已经看到执行该命令只采用最新版本。如果我希望我的父母指向旧版本怎么办?
    • 那么,这个“mvn versions:update-parent -DparentVersion=[1.0.0,1.0.1]”应该允许您设置要升级到的版本范围
    • 如何测试 X 模块是否采用 Y 的更新版本,因为我在 M2 存储库中看不到模块 X 被创建?
    最近更新 更多