假设我有一个多模块的 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 中的相关行)。
正确的方法是在版本控制系统(例如 git)中使用分支。
假设您使用 0.1.0 版本在分支
develop
上工作。
develop
分支合并到master
。 master 分支现在是 0.1.0develop
分支。现在,您的 master 分支有 0.1.0,并且 0.1.0 工件存在于您本地的 maven 存储库中。
develop 分支有 0.2.0-SNAPSHOT 版本。