首页 文章

如何使用versions-maven-plugin设置子模块版本?

提问于
浏览
10

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

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

通用/ 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}

但它实际上并没有更新任何模块poms的版本,这正是我要做的 .

[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 目标不允许我明确地为子模块设置版本号 .

我不正确地使用插件吗?

3 回答

  • 2

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

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

    这最终找到了我的子模块的所有poms并更新了每个模块的版本号 . 绝对比使用父设备上的插件慢,因为它设计完成,但功能 .

  • 1

    在插件版本-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
    
  • 4

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

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

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

    根聚合器POM,module1和module2都将parent / pom.xml称为其父POM . 移动到父级并运行版本:set goal:

    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
    

相关问题