首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用versions-maven-plugin设置子模块版本?

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

Stack Overflow用户
提问于 2015-01-27 00:57:36
回答 3查看 7.1K关注 0票数 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)

common/pom.xml:

代码语言:javascript
复制
<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)中,然后调用:

代码语言:javascript
复制
mvn versions:set -DnewVersion=999999

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

代码语言:javascript
复制
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的版本,这正是我想要做的。

代码语言:javascript
复制
[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目标不允许我明确地设置子模块的版本号。

我是不是错误地使用了插件?

EN

回答 3

Stack Overflow用户

发布于 2015-01-27 22:57:44

我不知道如何直接使用versions-maven-plugin来做这件事,所以我最终还是手动做了。

代码语言:javascript
复制
find . -name "pom.xml" -exec mvn versions:set -DnewVersion=1.0.3-SNAPSHOT -f {} \;

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

票数 4
EN

Stack Overflow用户

发布于 2018-02-06 01:14:49

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

代码语言:javascript
复制
mvn versions:set -DnewVersion=1.6-SNAPSHOT -DprocessAllModules=true

或者,如果像我一样,您需要强制执行版本:

代码语言:javascript
复制
mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -DnewVersion=1.6-SNAPSHOT -DprocessAllModules=true
票数 3
EN

Stack Overflow用户

发布于 2015-07-28 03:47:10

这有点晚了,但我刚刚找到了答案。您需要直接在父项目上运行versions:set goal。它将仔细扫描附近的聚合器POM (可能只查找一个目录,但我不是很确定),并且会像您预期的那样更新父模块、聚合器和所有子模块。

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

代码语言:javascript
复制
DANIJOH2-M-V0MA:test danijoh2$ ls
module1 module2 parent  pom.xml

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

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28154902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档