更新多模块Maven项目中模块的版本号
我有一个多模块maven项目。我们打算将所有这些模块一起版本化。但截至目前,我结束了在每个模块的pom.xml的硬编码版本如下更新多模块Maven项目中模块的版本号
<parent>
<artifactId>xyz-application</artifactId>
<groupId>com.xyz</groupId>
<version>2.50.0.g</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.xyz</groupId>
<artifactId>xyz-Library</artifactId>
<version>2.50.0.g</version>
和主父模块具有以下配置
<modelVersion>4.0.0</modelVersion>
<groupId>com.xyz</groupId>
<artifactId>xyz-application</artifactId>
<version>2.50.0.g</version>
<packaging>pom</packaging>
使用versions:set
从versions-maven plugin:
mvn versions:set -DnewVersion=2.50.1-SNAPSHOT
将调整所有POM版本,父版本和依赖性的版本在多模块项目。
如果你犯了一个错误,做
mvn versions:revert
之后,或
mvn versions:commit
如果你满意的结果。
谢谢...在一个示例中尝试过它,它的工作原理: - )...将在我的构建环境中尝试它。 – sandeepkunkunuru 2011-04-20 08:32:05
如果有一种解决方案不需要您真正更改每个模块,那就太好了。我能想到的唯一选择是始终为父-Pom使用快照版本。 – AmanicA 2011-07-02 21:49:10
除了'versions:set'之外,还可以指定'-DgenerateBackupPoms = false',因为默认情况下该插件备份原始pom文件。 – 2012-11-15 08:49:05
您可能希望查看Maven发布插件的release:update-versions目标。它将更新父级版本以及它下面的所有模块。
更新:请注意,以上是发布插件。如果你不释放,你可能需要使用versions:set
mvn versions:set -DnewVersion=1.2.3-SNAPSHOT
mvn版本:set不影响模块。 – 2017-09-12 12:52:55
它呢,我使用它。 [设置当前项目的版本,并基于该变化传播这种变化到任何子模块是必要的。(http://www.mojohaus.org/versions-maven-plugin/set-mojo.html) – Nishant 2017-09-13 17:53:58
确定它何时反应堆构建是在同一时间的父母。这是令人困惑的结构看起来不然... – 2017-09-14 07:01:57
我鼓励您阅读Maven Book about multi-module(反应堆)构建。
我的意思,尤其是以下几点:
<parent>
<artifactId>xyz-application</artifactId>
<groupId>com.xyz</groupId>
<version>2.50.0.g</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.xyz</groupId>
<artifactId>xyz-Library</artifactId>
<version>2.50.0.g</version>
应该改变成。这里只关心未定义的版本,只在其定义的父部件中使用。
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>xyz-application</artifactId>
<groupId>com.xyz</groupId>
<version>2.50.0.g</version>
</parent>
<groupId>com.xyz</groupId>
<artifactId>xyz-Library</artifactId>
并寻找具体的什么? – 2013-01-03 15:56:11
+ 1为'pom.xml'文件提出了正确的格式,但我同意(与@ThorbjørnRavnAndersen)一起阅读整本书的信息是矫枉过正的。 :p – 2016-01-27 09:09:40
不幸的是,从父项继承版本信息不会消除必须修改项目中的所有pom文件**的负担 - 因为它们都通过*版本号引用父项。 – 2016-08-05 21:41:47
版本:更新子模块听起来像你在找什么。你可以做的版本:设置如上所述,但这是一个轻量级的方式来更新父版本号。对于子模块,我认为您应该删除<version>
定义,因为它们将继承父模块的版本号。
最好的办法是,既然你打算捆绑你的模块组合在一起,可以外最pom.xml
(父模块)在指定<dependencyManagement>
标签下<project>
标签指引。它控制版本和组名称。在您的个人模块中,您只需在pom.xml
中指定<artifactId>
标签即可。它将采用父文件的版本。
我无法在[pom上找到标签dependencyManagement .XML](http://maven.apache.org/pom.html)。你在想[其他](http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Management)? – 2014-09-03 17:58:59
你的问题是错误的,并混淆有真正的多模块(“聚合”)POMs的人。从你的例子和答案看来,你实际上是在讨论一个父POM,而不是一个多模块的聚合POM。请参阅https://maven.apache.org/pom.html#Aggregation。 – 2016-12-16 17:05:00