maven use release:分支到分支选择模块

时间:2012-10-12 17:57:41

标签: maven branch maven-release-plugin

我有一个像这样的maven多模块项目

modA  
modB
modC
modD
  custom-pom.xml

这里是pom

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.xx.xx.correspondence</groupId>
  <artifactId>xxHudsonTP</artifactId>
  <version>1</version>
  <packaging>pom</packaging>

 <modules>
  <module>modA</module>
  <module>modB</module>
 </modules>
</project>

现在,当我调用release:branch时,意图在custom-pom.xml上创建一个分支,如此

mvn release:branch -DbranchName=new-branch -f custom-pom.xml

它最终创建了一个包含所有4个模块的分支。

是否有任何方法可以使用release插件来确保只选择的模块是分支的,而无需单独分支每个模块。

任何其他maven插件..?

被修改 这个问题的背景源于这样一个事实:我正在使用的svn repo有大约20个不同的模块,它们需要生成4个不同的工件。我可以轻松地将模块分组到子文件夹中,但由于一些模块之间很常见 文物,我没有想太多分裂它们。

据我所知,分支所有模块都很简单,可能很容易管理,但团队中的其他开发人员都有这种处理过多的感觉,无法完成简单的任务,比如一行修复bug。希望有所帮助。

1 个答案:

答案 0 :(得分:0)

据我所知,没有解决方案可以回答你的问题。

您必须记住,多模块项目(聚合)意味着每个子模块共享相同的应用程序生命周期。这真的目的是什么模块和聚合。

我看到2个不同的解决方法。

你有2个真正的不同生命周期

在你的4个子模块中确实有2组,比如group1:A和B,第2组,C和D.

将它们分成两个新项目:

Group1
|-- Project A
|   `-- pom.xml
|-- Project B
|   `-- pom.xml
`-- pom.xml

Group2
|-- Project C
|   `-- pom.xml
|-- Project D
|   `-- pom.xml
`-- pom.xml

Pro:您可以分别对第1组和第2组进行分支。 缺点:您将无法再对每个项目执行同步操作(在一个命令中)(如重新安装或构建它们)

你真的有一个单一的生命周期

情况可能就是这样。由于您非常了解项目的基础架构,因此您可能只想分支1个或2个子模块。所以,你不想处理太多的conf / artifacts / time build ......确实,所有这些原因都可能产生你不会看到的间接影响。始终建立整个项目!

如果这是为了节省空间(但是大多数SCM允许你以很少的空间进行分支,就像Yorkw所说的那样),因为你的SCM只允许你获得子模块(也许两者都可以,比如Clearcase)...抱歉,没有解决方案。这是maven的方式,我认为这是好的方式。 (好吧,这有点蛊惑人心,但我真的相信我所说的)

请不要犹豫,向我们解释为什么您真的只想分支模块的一部分。如果还有其他原因,您可能会有更准确的解决方案。< / p>