mvn版本:设置不更新子poms

时间:2013-10-28 21:56:46

标签: maven-3 versions-maven-plugin

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

我有以下结构,

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

有没有办法解决这个问题?

3 个答案:

答案 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