如何为多模块maven项目配置Jenkins

时间:2011-10-28 07:28:34

标签: configuration maven jenkins multi-module

我有一个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找到其他模块并构建项目的作业。??

3 个答案:

答案 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结构和所需的工作区结构:

  1. svn co modulA
  2. cd modulA
  3. svn propedit svn:externals . 注意:请注意行尾的(curdir)点!
  4. 添加以下行: parentModul http://path.to.your.svn.location.of.parentModul
  5. svn ci -m“为父母添加了外部”
  6. svn up
  7. 并且svn检索(并提交)您编码到以下工作空间结构

    modulA/
    |  |- pom.xml
    parentModul/
    |- modulB/
    |  |- pom.xml
    |- pom.xml
    pom.xml
    

    或者您可以向SVN“工作区”添加一个新目录并在那里添加新的pom.xml,并通过svn externals将所有可能需要的模块提升到一个级别(或多个级别)。

答案 2 :(得分:0)

  

在我的情况下,无法添加另一个父项目。已经在SVN中独立于其他模块检查了模块。

这表明将moduleA放入<modules>部分可能是错误的。如果moduleA具有不同的生命周期,那么您应该将其作为依赖项包含在内。