![](/img/trans.png)
[英]Using maven plugin versions-maven-plugin's <goal>use-latest-releases</goal> for latest releases
[英]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.