这是上一个问题的一个稍微不同的版本,因为我有单独的多模块和父 POM:在 Maven 项目中,如何自动更新所有子模块的版本,加上父模块?
我正在尝试更新我的 POM 以从开发快照版本变为已发布的版本号。我已经用谷歌搜索了这个问题,尝试了发布和版本插件,似乎没有什么能够处理我相当简单的设置。
遵循已发布的 Maven 最佳实践,并在可以避免的情况下尽量不重复信息,我最终为我的多模块项目获得了以下结构。有一个由常见的 pom-parent.xml 定义的单一版本;B依赖于A。
我发现标准插件无法处理看似相当基本的设置有点令人惊讶,我错过了什么吗?
我想出的解决方法都不是完全令人满意的:
将产品版本定义为属性有点不稳定,由于用户 settings.xml 或其他技巧,相同的模块源可能会获得不同的版本
合并根 pom.xml 和 pom-parent.xml 并将我目前在根 pom 中维护的产品范围的构建步骤移动到专用模块中;并希望std插件能够工作......没有尝试过。
有什么建议吗?
root/pom-parent.xml:下面所有 POM 的父级
<project...>
<groupId>acme</groupId>
<artifactId>ParentPom</artifactId>
<packaging>pom</packaging>
<version>1.0.0-SNAPSHOT</version>
root/pom.xml:以 A 和 B 作为子模块的多模块项目
<project ...>
<parent>
<groupId>acme</groupId>
<artifactId>ParentPom</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<groupId>acme</groupId>
<artifactId>Product</artifactId>
<packaging>pom</packaging>
<modules>
<module>A</module>
<module>B</module>
</modules>
根/A/pom.xml:
<project ...>
<parent>
<groupId>acme</groupId>
<artifactId>ParentPom</artifactId>
<relativePath>../parent-pom.xml</relativePath>
<version>1.0.0-SNAPSHOT</version>
</parent>
<groupId>acme</groupId>
<artifactId>A</artifactId>
<packaging>jar</packaging>
根/B/pom.xml:
<project ...>
<parent>
<groupId>acme</groupId>
<artifactId>ParentPom</artifactId>
<relativePath>../parent-pom.xml</relativePath>
<version>1.0.0-SNAPSHOT</version>
</parent>
<groupId>acme</groupId>
<artifactId>B</artifactId>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>acme</groupId>
<artifactId>A</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
</dependencies>