如何在不更新子模块的情况下更新父/聚合器 pom 的版本?

问题描述 投票:0回答:1

假设我有一个多模块的 maven 项目,有一个父 pom:

<project>
  <modelVersion>4.0.0</modelVersion>
 
  <groupId>com.example</groupId>
  <artifactId>my-parent</artifactId>
  <version>0.1.0</version>

  <modules>
    <module>module1</module>
    <module>module2</module>
    <!-- etc. -->
  </modules>
</project>

和几个模块,如:

<project>
  <modelVersion>4.0.0</modelVersion>
 
  <groupId>com.example</groupId>
  <artifactId>module1</artifactId>
  <version>0.1.0</version>

  <parent>
    <groupId>com.example</groupId>
    <artifactId>my-parent</artifactId>
    <version>0.1.0</version>
  </parent>
</project>

现在我正在尝试使用版本 maven 插件更新父 pom 的版本,without 更新子模块中相应的父部分。也就是说,我希望父母得到一个版本,例如

0.2.0-SNAPSHOT
,而子模块在此示例中仍然引用
0.1.0
父版本,即:

<project>
  <modelVersion>4.0.0</modelVersion>
 
  <groupId>com.example</groupId>
  <artifactId>module1</artifactId>
  <version>0.1.0</version>

  <parent>
    <groupId>com.example</groupId>
    <artifactId>my-parent</artifactId>
    <version>0.1.0</version>
  </parent>
</project>

我该怎么做?

我已经尝试了

mvn versions:set
命令的几乎所有可选参数,这些参数似乎会影响此行为,包括 maven
-N
标志,以各种组合,但没有一个有效。 是否可以使用版本 maven 插件来做到这一点?还有别的办法吗?

看来我遇到了与这些问题中描述的相反的问题:

版本插件不更新子模块,只更新父模块

带有聚合器 pom 的 mutli 模块项目上的

versions-maven-plugin 不会在模块上设置版本

请注意,我正在尝试自动执行此任务,这就是为什么我要运行一些插件/命令来获得所需的结果(显然您可以手动编辑父 pom 中的相关行)。

maven maven-3 pom.xml multi-module
1个回答
0
投票

正确的方法是在版本控制系统(例如 git)中使用分支。

假设您使用 0.1.0 版本在分支

develop
上工作。

  1. 将您的
    develop
    分支合并到
    master
    。 master 分支现在是 0.1.0
  2. 再次检查您的
    develop
    分支。
  3. 将 develop 分支上的项目升级到 0.2.0-SNAPSHOT
  4. 如果你需要指向任何工件的 0.1.0 版本,你现在就可以做到。

现在,您的 master 分支有 0.1.0,并且 0.1.0 工件存在于您本地的 maven 存储库中。

develop 分支有 0.2.0-SNAPSHOT 版本。

© www.soinside.com 2019 - 2024. All rights reserved.