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

7eumitmz  于 2023-04-20  发布在  Maven
关注(0)|答案(1)|浏览(196)

假设我有一个多模块的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>

现在,我尝试使用versions maven插件更新父pom的版本,* 而不更新子模块中相应的父节。也就是说,我希望父模块获得例如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标志,在各种组合中,但都不起作用。是否可以使用versions maven插件做到这一点?是否有其他方法?
似乎我遇到了这些问题中描述的相反问题:
Versions plugin not updating child modules, just parent being updated
versions-maven-plugin on mutli module project with aggregator pom does not set versions on modules
请注意,我正在尝试自动化这项任务,这就是为什么我会运行一些插件/命令来实现所需的结果(手动,你显然可以只编辑父pom中的相关行)。

mutmk8jj

mutmk8jj1#

正确的方法是在你的版本控制系统中使用分支(例如git)。
让我们假设您使用0.1.0版本处理分支develop
1.将develop分支合并到master。master分支现在是0.1.0
1.再次检查您的develop分支。
1.将开发分支上的项目升级到0.2.0-SNAPSHOT
1.如果您需要指向任何工件的0.1.0版本,现在就可以这样做。
现在,您的master分支有0.1.0,而0.1.0工件存在于本地maven存储库中。
develop分支的版本为0.2.0-SNAPSHOT。

相关问题