每个模块使用svn标签进行Maven发布设置

时间:2011-01-25 14:18:43

标签: maven svn tagging maven-release-plugin multi-module

目标

多模块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元素,但在执行反应器释放时不会使用它们。
  • mvn --batch-mode -DcommitPerProject=true -DautoVersionSubmodules=true -Drelease.version=1.0.6 release:prepare release:perform

问题

  • maven-release-plugin不会为每个模块创建一个svn标记
  • maven-release-plugin会使用无效网址覆盖<scm>代码,例如嵌套的“trunk”-tags在xx-parent标签下

问题

如何使用Maven发布流程,多模块布局设置此项目,并且每个模块仍然可以获得单独的标记?

参考

http://jira.codehaus.org/browse/MRELEASE-261(已结束)和MRELEASE-561(开放)

1 个答案:

答案 0 :(得分:1)

根据ArnaudHéritier(Apache Maven PMC成员)的说法,
Maven无法处理模块-A v0.1,模块-B v0.3等复合应用程序。
Maven将项目及其所有子模块视为一个独特的集合。

见:http://blog.aheritier.net/maven-release-plugin-2-0/(2010年6月9日)

可能情况因Maven 3而改变了?