Maven更新版本的模块以及使用该模块的模块中的依赖项

时间:2019-03-01 12:51:47

标签: maven build dependencies

我正在努力更新模块版本。 我的项目非常庞大(大约有50个模块),但我将简化此示例,以供参考。

-moduleA
  -moduleA1
    -pom.xml
  -pom.xml
-moduleB
  -moduleB1
    -pom.xml
  -pom.xml
-pom.xml

我想做什么。 假设每个pom.xml中都有一个版本-5.0.0。 ModuleA1 pomx看起来像:

<parent>
    <groupId>com.sample.project</groupId>
    <artifactId>moduleA</artifactId>
    <version>5.0.0</version>
</parent>
<groupId>com.sample.project.moduleA</groupId>
<artifactId>moduleA1</artifactId>
<version>5.0.0</version>

现在,我想增加moduleA1的版本。 所以...

mvn -N versions:set -DnewVersion=5.0.1 -DgroupId=com.sample.project.moduleA -DartifactId=moduleA1

ModuleB1依赖于moduleA1

<parent>
    <groupId>com.sample.project</groupId>
    <artifactId>moduleB1</artifactId>
    <version>5.0.0</version>
</parent>
<groupId>com.sample.project</groupId>
<artifactId>moduleB1</artifactId>
<version>5.0.0</version>
<dependency>
        <groupId>com.sample.project.moduleA</groupId>
        <artifactId>moduleA1</artifactId>
        <version>5.0.0</version>
</dependency>

此依赖项的版本应进行更新,并且仅在第一次时使用(当版本与父代相同时)。如果我想将其更新为5.0.2,则此依存关系将不会更改,它将保持为5.0.1(仅将有针对性的moduleA1更新为5.0.2)。 我尝试使用dependencyManegement,但结果完全相同。 有什么想法如何强制maven更新指向的模块及其模块在其他模块上的依赖关系?

2 个答案:

答案 0 :(得分:0)

在所有模块依赖项中使用${project.version},并且您拥有一致且最新的版本。

答案 1 :(得分:0)

最后我找到了解决方案。 关键是将oldVersion参数设置为以前的版本。否则,version:set将使用$ {project.version},这是第一次更新版本,因为模块版本与project.version相同。