4

我对此做了很多研究,但到目前为止无法解决。

我有以下结构,

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>

When I use mvn versions:set while being in parent folder it only updates the parent/pom.xml. I expected it to update root/pom.xml artifact1/pom.xml and artifact2/pom.xml

Is there a way to resolve this?

4

3 回答 3

4

首先请还原父 pom 中的版本号,并确保所有子 pom 具有相同的版本。

然后导航到父 pom 目录并执行以下命令:

mvn versions:set versions:update-child-modules -DnewVersion=<New_Version_Number> -DprocessAllModules
于 2019-06-04T13:19:54.707 回答
3

我们也有同样的问题,调试后我们发现我们的一些 pom.xml 有 groupId 作为一些变量而不是硬编码,这在 mvn versions:set 运行时导致如下问题,

表达式:jf.groupId 无值

表达式:ab.groupId 无值

表达式:gd.groupId 无值

要解决此问题,请修改所有 pom.xml 文件以具有硬编码的 groupId 而不是变量/属性,或者将所有这些变量设置为父/反应器 pom.xml 中的属性

于 2016-12-19T06:56:01.237 回答
1

我也有这个项目 pom 布局并且遇到了同样的问题,所以我会澄清我是如何在 Maulin 和 WIII 的帮助下解决它的。

我正在运行版本:在根 pom.xml 上设置,这导致了

[0m [错误] 无法在项目 xxxxxxxxx 上执行目标 org.codehaus.mojo:versions-maven-plugin:2.1:set (default-cli):项目版本是从父级继承的。-> [帮助 1]

我设法通过向根 pom.xml 添加版本标记来解决此问题。该 homever 仅导致在版本期间更新根:设置,并且父模块和子模块没有获得更新的版本号。

这些是通过在父 pom.xml 上运行 versions:set 来修复的(pom 也可以在 jenkins 中指定)并从根目录中删除版本。所以只有父 pom 有一个版本,其他模块(根模块和子模块)继承了它。

于 2013-11-27T14:48:37.420 回答