我对此做了很多研究但到目前为止无法解决。
我有以下结构,
root folder
parent/pom.xml (parent pom)
artifact1/pom.xml
artifact2/pom.xml
pom.xml (aggregator pom)
root/pom.xml
------------
<parent>
<groupId>releasetest2</groupId>
<artifactId>root</artifactId>
<version>1.0.4</version>
<relativePath>parent</relativePath>
</parent>
<artifactId>aggregator</artifactId>
<packaging>pom</packaging>
artifact1/pom.xml
-----------------
<parent>
<groupId>releasetest2</groupId>
<artifactId>root</artifactId>
<version>1.0.4</version>
<relativePath>../parent</relativePath>
</parent>
<groupId>releasetest</groupId>
<artifactId>artifact1</artifactId>
<packaging>jar</packaging>
artifact2/pom.xml
-----------------
<parent>
<groupId>releasetest2</groupId>
<artifactId>root</artifactId>
<version>1.0.4</version>
<relativePath>../parent</relativePath>
</parent>
<groupId>releasetest</groupId>
<artifactId>artifact2</artifactId>
<packaging>jar</packaging>
parent/pom.xml
--------------
<groupId>releasetest2</groupId>
<artifactId>root</artifactId>
<version>1.0.4</version>
<packaging>pom</packaging>
<properties>
<MAIN.version>${project.version}</MAIN.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>releasetest</groupId>
<artifactId>artifact1</artifactId>
<version>${MAIN.version}</version>
</dependency>
<dependency>
<groupId>releasetest</groupId>
<artifactId>artifact2</artifactId>
<version>${MAIN.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
当我使用mvn版本时:在父文件夹中设置它只更新parent / pom.xml。我希望它能更新root / pom.xml artifact1 / pom.xml和artifact2 / pom.xml
有没有办法解决这个问题?
答案 0 :(得分:3)
我们也有同样的问题,在调试之后我们发现我们的一些pom.xml将groupId作为一些变量并且没有硬编码,导致mvn版本:set运行时出现如下问题,< / p>
表达式:jf.groupId没有值
表达式:ab.groupId没有值
表达式:gd.groupId没有值
要解决此问题,请修改所有pom.xml文件以使用硬编码的groupId而不是变量/ property或将所有这些变量设置为parent / reactor pom.xml中的属性
答案 1 :(得分:1)
我也有这个项目的pom布局并且遇到了同样的问题,所以我会澄清我是如何通过Maulin和WIII的帮助解决它的。
我正在运行版本:在根pom.xml上设置,这导致了
[0m [错误]无法在项目xxxxxxxxx上执行目标org.codehaus.mojo:versions-maven-plugin:2.1:set(default-cli):项目版本从父项继承。 - &GT; [帮助1]
我设法通过向根pom.xml添加版本标记来修复。该homever仅在版本期间更新了根:set,并且父和子模块未获得更新的版本号。
通过运行以下版本修复了这些问题:在父pom.xml上设置(也可以在jenkins中指定pom)并从根目录中删除版本。所以只有父pom有一个版本,其他模块(根和子模块)继承了它。
答案 2 :(得分:0)
首先请还原父pom中的版本号,并确保所有子pom具有相同的版本。
然后导航到父pom目录并执行以下命令:
mvn versions:set versions:update-child-modules -DnewVersion=<New_Version_Number> -DprocessAllModules