假设我有一个多模块的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中的相关行)。
1条答案
按热度按时间mutmk8jj1#
正确的方法是在你的版本控制系统中使用分支(例如git)。
让我们假设您使用0.1.0版本处理分支
develop
。1.将
develop
分支合并到master
。master分支现在是0.1.01.再次检查您的
develop
分支。1.将开发分支上的项目升级到0.2.0-SNAPSHOT
1.如果您需要指向任何工件的0.1.0版本,现在就可以这样做。
现在,您的master分支有0.1.0,而0.1.0工件存在于本地maven存储库中。
develop分支的版本为0.2.0-SNAPSHOT。