6

目标

多模块 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(开放)

4

1 回答 1

1

根据 Arnaud Hé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 以来情况发生了变化?

于 2011-12-14T17:42:42.337 回答