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

mha*_*ler 6 svn tagging maven multi-module maven-release-plugin

目标

多模块maven版本,每个模块带有标签

情况

假设基于Maven的Java项目的以下项目结构:

xx-parent
xx-moduleA
xx-moduleB
xx-moduleC/submodule1
xx-moduleC/submodule2
xx-moduleC/submodule3
Run Code Online (Sandbox Code Playgroud)

Subversion中的项目结构如下:

xx-parent/trunk
xx-moduleA/trunk
xx-moduleB/trunk
xx-moduleC/trunk/submodule1
xx-moduleC/trunk/submodule2
xx-moduleC/trunk/submodule3
Run Code Online (Sandbox Code Playgroud)

我的目标是在执行发布时为每个模块创建标记:

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
Run Code Online (Sandbox Code Playgroud)

过去,每个模块都是单独构建和发布的.随着项目规模的扩大(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>用无效的URL 覆盖标记,例如xx-parent标记下的嵌套"trunk"-tags

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

参考

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

小智 1

根据 Arnaud H\xc3\xa9ritier(Apache Maven PMC 成员)的说法,\n
\nMaven 无法处理像 module-A v0.1、module-B v0.3 这样的复合应用程序。\n
\nMaven 考虑一个项目并他的所有子模块作为一个独特的集合。 \n

\n请参阅:http://blog.aheritier.net/maven-release-plugin-2-0/(2010 年 6 月 9 日)\n
\n
\n也许情况发生了变化与 Maven 3 ?

\n