我有一个maven多模块项目。结构如下:
-modulA (Main project)
- pom.xml
-parentModul (Aggregator)
- pom.xml
- ModulB (Integration Test Project)
-pom.xml
包装定义如下:
<project ...>
<modules>
<module>../modulA</module>
<module>ModulB</module>
</modules>
其中一个模块(ModulA)具有相同的层次结构级别,另一个模块位于父模块中。
我尝试在Jenkins中添加一个作业来自动构建所有作业。 (干净包装)..
我应该如何配置parentModul找到其他模块并构建项目的作业。??
答案 0 :(得分:2)
添加另一个聚合器。将modulA和parentModul放在同一目录中,并在它们上面一层,只需添加另一个这样的pom:
aggregator/
|- modulA/
| |- pom.xml
|- parentModul/
| |- modulB/
| | |- pom.xml
| |- pom.xml
|- pom.xml
在aggregator / pom.xml中定义模块部分如下:
<project ...>
<modules>
<module>modulA</module>
<module>parentModul</module>
</modules>
</project>
答案 1 :(得分:1)
一种解决方案是使用SVN Externals从疯狂的SVN结构组装理智的Maven项目工作区,甚至可以跨越不同的svn服务器。使用svn external不是一个理想的解决方案,因为它会导致maven release插件出现问题,并且在某些配置中会导致CI的SCM轮询。他们告诉你:“你不应该使用svn externals”,因为这会让生活变得更加困难。但腿部和拐杖也是如此,但当你腿部断裂(或者是fubar的svn结构)时,你真的不介意给你带来的不便。
有几种方法可以执行此操作,具体取决于您的SVN结构和所需的工作区结构:
svn co modulA
cd modulA
svn propedit svn:externals .
注意:请注意行尾的(curdir)点! 并且svn检索(并提交)您编码到以下工作空间结构
modulA/
| |- pom.xml
parentModul/
|- modulB/
| |- pom.xml
|- pom.xml
pom.xml
或者您可以向SVN“工作区”添加一个新目录并在那里添加新的pom.xml,并通过svn externals将所有可能需要的模块提升到一个级别(或多个级别)。
答案 2 :(得分:0)
在我的情况下,无法添加另一个父项目。已经在SVN中独立于其他模块检查了模块。
这表明将moduleA
放入<modules>
部分可能是错误的。如果moduleA
具有不同的生命周期,那么您应该将其作为依赖项包含在内。