簡體   English   中英

如何使用versions-maven-plugin設置子模塊版本?

[英]How to use versions-maven-plugin to set child module versions?

我有一個多模塊項目,所有模塊都有一個共同的父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}

但是它實際上並沒有更新任何模塊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目標不允許我明確設置子模塊的版本號。

我使用插件不正確嗎?

無法弄清楚如何直接使用versions-maven-plugin進行操作,因此我最終手動進行了操作。

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

最終找到了子模塊的所有pom,並更新了每個模塊的版本號。 絕對比在父級上使用插件要慢,因為它可以完成,但可以正常工作。

2.5版本的插件版本-maven-plugin中引入了一種解決方案

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

這次聚會晚了一點,但是我才找到答案。 您需要直接在父項目上運行versions:set目標。 它將仔細掃描附近的聚合器POM(可能僅查找一個目錄,但我不是肯定的),並且將按照您的期望更新父,聚合器和所有子模塊。

根POM是聚合器,並將父模塊,模塊1和模塊2列為模塊:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM