目标

每个模块带有标签的多模块Maven释放

情况

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

xx-parent
xx-moduleA
xx-moduleB
xx-moduleC/submodule1
xx-moduleC/submodule2
xx-moduleC/submodule3

颠覆的项目结构如下:

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>
  • 启用 提交Byproject, ,它确实每个模块提交,但每个模块都不要标记。看
  • 每个模块都有自己的 <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的标签,例如嵌套的“ TRUNK” - 标签下方的标签

问题

如何通过Maven Release流程,多模块布局设置此项目,并且每个模块仍然获得单独的标签?

参考

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

有帮助吗?

解决方案

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

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

也许自从Maven 3以来的情况发生了变化?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top