【问题标题】:Maven: Best way to change SNAPSHOT to Release version for parent/child modules while release?Maven:在发布时将 SNAPSHOT 更改为父/子模块的发布版本的最佳方法?
【发布时间】:2013-01-30 13:58:11
【问题描述】:

在开发过程中,我们为 maven 模块使用 SNAPSHOT 版本(例如 1.0-SNAPSHOT)。

例如父模块的 Maven 配置:

<groupId>com.mycomp.basemodule</groupId>
<artifactId>base-module</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>base-module</name>
<modules>       
    <module>sub-module1</module>        
    <module>sub-module2</module>        
    <module>sub-module3</module>        
    <module>sub-module4</module>        

</modules>

例如子模块的 Maven 配置:

子模块 1:

<parent>
     <groupId>com.mycomp.basemodule</groupId>
      <artifactId>base-module</artifactId>
      <version>1.0-SNAPSHOT</version>
</parent>
<groupId>com.mycomp.sub-module1</groupId>
<artifactId>sub-module1</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>sub-module1</name>

其他子模块(2,3,4)也要考虑相同的配置。

在发布项目/补丁时,我们需要将此 SNAPSHOT 版本更改为实际发布版本。

有一种粗略的方法可以更改版本。我可以访问父模块和所有子模块的每个 pom.xml,并且可以将 SNAPSHOT 版本更改为发布版本。

是否有任何其他最佳做法可以将此 SNAPSHOT 版本更改为在公共位置发布版本,这样我就不需要更新所有 pom.xml 文件?

【问题讨论】:

    标签: maven-3


    【解决方案1】:

    我相信,您应该使用maven-release plugin 以在 maven 中预期的方式解决问题。见:http://maven.apache.org/guides/mini/guide-releasing.html

    正如文档所说:

    maven-release 插件的主要目的是提供一种标准机制,用于在直接开发团队之外发布项目工件。该插件提供了创建发布和相应地更新项目的 SCM 的基本功能。

    更新: 看来您不是第一个有问题的人,请参阅:Maven versioning best practices 那里的答案似乎很完整。

    【讨论】:

    • 感谢彼得的回复。但是,似乎 maven-release-plugin 在我们发布时会自动增加版本?如果我想自己增加版本怎么办?
    • 我想,我不明白这里的重点。将您的期望与发布插件提供给您的结果进行比较时,结果有何不同?
    • @NarendraVerma 自己做增量而不是通过 maven-release-plugin 自动执行增量的原因可能是什么?如果您喜欢与 maven-release-plugin 不同的任何东西,建议您可以使用一些命令行选项来影响它的行为。
    • @Khmarbaise:假设目前我们正在开发 1.5-SNAPSHOT 版本。在发布应用程序时,如果我使用 maven-release-plugin,它会将代码发布为 1.5,并将我的开发环境转换为 1.6-SNAPSHOT。如果我想要我的开发版本 1.5.1-SNAPSHOT 而不是 1.6-SNAPSHOT 怎么办?
    • @NarendraVerma 这个答案有帮助吗:stackoverflow.com/questions/5557659/… ?
    【解决方案2】:

    更简单的方法:使用maven-version-plugin 更新版本,然后以您自己的方式准备发布。

    【讨论】:

    • 可以说更简单,但不是 maven 项目应该使用的“约定优于配置”方法。
    • “Convetion over configuration”由 POM 实现,而不是 Release Plugin。版本插件也是真正的 Maven 插件。并非所有人都喜欢发布插件,他们使用自己的方式发布产品:Lieven Doclo, Why I Never Use the Maven Release Plugin
    猜你喜欢
    • 2011-06-18
    • 2016-07-24
    • 1970-01-01
    • 2017-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-08
    • 1970-01-01
    相关资源
    最近更新 更多