【问题标题】:How to use versions-maven-plugin to set child module versions?如何使用versions-maven-plugin设置子模块版本?
【发布时间】:2015-03-25 03:33:28
【问题描述】:

我有一个多模块项目,所有模块都有一个共同的父 pom 和一个聚合器/构建 pom。我正在尝试使用 maven-versions-plugin 更新/设置我所有模块的版本,但它一直跳过子模块。

项目布局: - common/pom.xml(构建 pom) - common/superpom/pom.xml(父 pom) - module1/pom.xml (module1 pom) - module2/pom.xml (module2 pom)

common/pom.xml:

<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.bic</groupId>
    <artifactId>builder</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>
    <name>Builder</name>

    <modules>
        <module>../module1</module>

        <!-- POM Component Versionning -->
        <module>../module2</module>
    </modules>
<build>
    <plugins>

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>versions-maven-plugin</artifactId>
            <version>2.1</version>
        </plugin>

    </plugins>
</build>
</project>

我已经尝试将插件添加到构建 pom (common/pom.xml) 中,然后调用:

mvn versions:set -DnewVersion=999999

Maven 列出了它在子模块中找到的所有道具,所以我知道它正在正确解析它们:

Props: {project.version=50, project.parent.version=1.0-SNAPSHOT, project.parent.groupId=com.bic, project.artifactId=module1, project.groupId=com.bic, project.parent.artifactId=common}
Props: {project.version=50, project.parent.version=1.0-SNAPSHOT, project.parent.groupId=com.bic, project.artifactId=module2, project.groupId=com.bic, project.parent.artifactId=common}

但它实际上并没有更新任何模块 pom 的版本,这是我想要做的。

[INFO] Reactor Summary:
[INFO]
[INFO] Module1 ........................................ SKIPPED
[INFO] Module2 ........................................ SKIPPED
[INFO] Builder ........................................ SUCCESS [  2.037 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.975 s
[INFO] Finished at: 2015-01-26T11:48:11-05:00
[INFO] Final Memory: 24M/44M
[INFO] ------------------------------------------------------------------------

update-child-modules 目标不允许我为子模块显式设置版本号。

我是不是用错了插件?

【问题讨论】:

  • @Mysterion - 我已经阅读了那个 SO 帖子,如果你注意到这个帖子,我的问题仍然没有明确的答案。我仍然不确定如何更新子模块。

标签: java maven version


【解决方案1】:

无法弄清楚如何直接使用versions-maven-plugin,所以我最终手动完成。

find . -name "pom.xml" -exec mvn versions:set -DnewVersion=1.0.3-SNAPSHOT -f {} \;

这最终找到了我的子模块的所有 pom 并更新了每个中的版本号。绝对比在父级上使用插件要慢,因为它的设计目的是完成,但功能齐全。

【讨论】:

    【解决方案2】:

    插件versions-maven-plugin 2.5版本中的解决方案是introduced

    mvn versions:set -DnewVersion=1.6-SNAPSHOT -DprocessAllModules=true
    

    或者如果你像我一样需要强制版本:

    mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -DnewVersion=1.6-SNAPSHOT -DprocessAllModules=true
    

    【讨论】:

      【解决方案3】:

      聚会有点晚了,但我刚刚找到了答案。您需要直接在父项目上运行版本:设置目标。它会仔细扫描附近的聚合器 POM(可能只查找一个目录,但我不是肯定的),并且会按照您的预期更新父模块、聚合器和所有子模块。

      根 POM 是聚合器,并将 parent、module1 和 module2 列为模块:

      DANIJOH2-M-V0MA:test danijoh2$ ls
      module1 module2 parent  pom.xml
      

      根聚合器 POM、module1 和 module2 都将 parent/pom.xml 作为它们的父 POM。进入父级并运行版本:设置目标:

      DANIJOH2-M-V0MA:test danijoh2$ cd parent
      DANIJOH2-M-V0MA:parent danijoh2$ ls
      pom.xml
      
      DANIJOH2-M-V0MA:parent danijoh2$ mvn org.codehaus.mojo:versions-maven-plugin:2.1:set -DnewVersion=1.0.0 -DgenerateBackupPoms=false
      [INFO] Scanning for projects...
      [INFO]                                                                         
      [INFO] ------------------------------------------------------------------------
      [INFO] Building parent 1.0.0-SNAPSHOT
      [INFO] ------------------------------------------------------------------------
      [INFO] 
      [INFO] --- versions-maven-plugin:2.1:set (default-cli) @ parent ---
      [INFO] Searching for local aggregator root...
      [INFO] Local aggregation root: /Users/danijoh2/Desktop/test
      [INFO] Processing com.cisco.dan.test:parent
      [INFO]     Updating project com.cisco.dan.test:parent
      [INFO]         from version 1.0.0-SNAPSHOT to 1.0.0
      [INFO] 
      [INFO] Processing com.cisco.dan.test:aggregator
      [INFO]     Updating parent com.cisco.dan.test:parent
      [INFO]         from version 1.0.0-SNAPSHOT to 1.0.0
      [INFO]     Updating project com.cisco.dan.test:aggregator
      [INFO]         from version 1.0.0-SNAPSHOT to 1.0.0
      [INFO] 
      [INFO] Processing com.cisco.dan.test:module1
      [INFO]     Updating parent com.cisco.dan.test:parent
      [INFO]         from version 1.0.0-SNAPSHOT to 1.0.0
      [INFO]     Updating project com.cisco.dan.test:module1
      [INFO]         from version 1.0.0-SNAPSHOT to 1.0.0
      [INFO] 
      [INFO] Processing com.cisco.dan.test:module2
      [INFO]     Updating parent com.cisco.dan.test:parent
      [INFO]         from version 1.0.0-SNAPSHOT to 1.0.0
      [INFO]     Updating project com.cisco.dan.test:module2
      [INFO]         from version 1.0.0-SNAPSHOT to 1.0.0
      

      【讨论】:

        猜你喜欢
        • 2023-04-09
        • 2016-03-05
        • 1970-01-01
        • 1970-01-01
        • 2018-07-25
        • 1970-01-01
        • 1970-01-01
        • 2017-06-22
        • 2014-06-03
        相关资源
        最近更新 更多