1

我有一个像这样的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 个模块的分支。

有没有办法使用发布插件来确保只分支选定的模块,而不需要单独分支每个模块。?

任何其他maven插件..?

已编辑 这个问题的背景源于这样一个事实,即我正在使用的 svn repo 有大约 20 个不同的模块,它们需要生成 4 个不同的工件。我本可以轻松地将模块分组到子文件夹中,但是由于工件之间有一些模块是通用的,因此我没有过多考虑将它们分开。

我知道对所有模块进行分支是微不足道的,并且可能很容易管理,但是团队中的其他开发人员有这种处理太多的感觉来完成简单的任务,比如单行错误修复。希望有帮助。

4

1 回答 1

0

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

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

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

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

在您的 4 个子模块中确实有 2 个组,比如说 group1:A 和 B,组 2,C 和 D。

将它们拆分为 2 个新项目:

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

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

优点:您可以分别分支 1 组和 2 组。缺点:您将无法再对每个项目执行同时操作(在一个命令中)(例如 realeasing 或 builind 它们)

你真的有 1 个生命周期

大概就是这样。由于您对项目的底层架构非常了解,您可能只想分支 1 或 2 个子模块。因此,您不想处理太多的 conf/artifacts/time 构建……确实,所有这些原因可能会产生您看不到的间接影响。始终构建整个项目!

如果这是为了节省空间(但是大多数 SCM 允许您使用很少的空间进行分支,就像 Yorkw 说的那样),因为您的 SCM 只允许您获取子模块(也许两者都可以,比如 Clearcase)......对不起,没有解决方案。这是行家的方式,我认为这是好的方式。(好吧这有点煽动,但我真的相信我说的话)

不要犹豫,向我们解释为什么你真的只想分支你的模块的一个子集。如果还有其他原因,您可能有更准确的解决方案。

于 2012-10-15T12:09:16.730 回答