目标
多模块 Maven 版本,每个模块带有标签
情况
假设基于 Maven 的 Java 项目的项目结构如下:
xx-parent
xx-moduleA
xx-moduleB
xx-moduleC/submodule1
xx-moduleC/submodule2
xx-moduleC/submodule3
Subversion 中的项目结构如下:
xx-parent/trunk
xx-moduleA/trunk
xx-moduleB/trunk
xx-moduleC/trunk/submodule1
xx-moduleC/trunk/submodule2
xx-moduleC/trunk/submodule3
我的目标是在执行发布时为每个模块创建标签:
xx-parent/tags/xx-parent-1.0
xx-moduleA/tags/xx-moduleA-1.0
xx-moduleB/tags/xx-moduleB-1.0
xx-moduleC/tags/xx-moduleC-1.0
过去,每个模块都是单独构建和发布的。随着项目变得越来越大(30 个模块),构建发布的时间也在增加。我想将项目更改为多模块设置以执行反应堆构建和发布。构建似乎不是问题,但为每个模块创建标签是。
maven-release-plugin 似乎坚持只为整个项目/发布制作一个标签。我正在寻找一种创建多个标签的方法,例如每个模块一个标签。
到目前为止我尝试过的
- 创建一个 xx-all Subversion 别名,它检查所有子模块,所以我可以引用它们
<module>../xx-moduleB</module>
- 启用commitByProject,它确实按模块提交,但不按模块标记。看
- 每个模块在 中都有自己的
<scm>
元素pom.xml
,但在执行 reactor 发布时不使用它们。 mvn --batch-mode -DcommitPerProject=true -DautoVersionSubmodules=true -Drelease.version=1.0.6 release:prepare release:perform
问题
- maven-release-plugin 不会为每个模块创建一个 svn 标签
- maven-release-plugin 用无效的 URL 覆盖
<scm>
标签,例如 xx-parent 标签下的嵌套“trunk”标签
问题
如何使用 Maven 发布流程、多模块布局设置此项目,并且仍然为每个模块获取单独的标签?
参考
http://jira.codehaus.org/browse/MRELEASE-261(关闭)和 MRELEASE-561(开放)