Maven:让“mvn -Pjenkins”与“mvn clean install pmd:pmd javadoc:aggregate”相同

时间:2013-03-13 12:54:24

标签: maven jenkins continuous-integration hudson maven-3

我们在Jenkins实例中有许多Maven作业,每个作业都有自己在构建配置中指定的特定调用字符串,类似于

mvn clean install -DDISABLED="javadoc:aggregate" checkstyle:checkstyle pmd:pmd findbugs:findbugs

我想整合这个,以便调用字符串存储在POM中的某个位置以及合适的配置文件信息,这样我们就可以用

替换所有这些略有不同的作业的调用字符串
mvn -Pjenkins

标准调用。据我所知,defaultGoal条目仅支持单个目标,乍一看似乎不足以代表我们的多个目标,但如果我们可以将其与多个条目相对应,则可能就足够了。如果可能的话,我希望避免在简单的调用字符串的情况下设置特定于配置文件的绑定到标准生命周期阶段。

3 个答案:

答案 0 :(得分:4)

您可以在配置文件中配置其他mojos,并且可以将mojos绑定到生命周期阶段。这两个组合将允许您在给定某个配置文件时运行其他mojos。

这是Maven中使用的标准技术。例如,当你运行“mvn release:perform”时,它会运行一个带有“-Prelease”的嵌套Maven会话,它会执行其他操作,例如GPG签名二进制文件。

<profile>
  <id>jenkins</id>
  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>findbugs-maven-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>findbugs</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      ... other mojos ...

findbugs mojo是bound by default to the compile phase,因此在编译阶段会自动调用它。如果您想使用默认情况下不绑定到任何生命周期阶段的mojo,请添加&lt; phase&gt; ...&lt; / phase&gt;。

有关我们调用FindBugs的完整示例,请参阅our POM in the Jenkins core。其他mojos基本相同。

请注意,要使其正常工作,您的默认目标需要将生命周期阶段调用到某个点(例如包或安装)。

答案 1 :(得分:2)

我认为没有直接的方法可以为Maven提供一个调用字符串。如你所说,你可以添加一个自定义的“jenkins”配置文件,在其中配置checkstyle,pmd和findbugs插件以绑定到构建阶段(例如它们的默认阶段)。您仍然需要运行mvn -Pjenkins clean install。但是,这样做的好处是您还可以为这些插件添加自定义配置(例如,在PMD覆盖范围中包含测试代码)。

答案 2 :(得分:0)

我认为您可以在配置文件的<build><plugins/></build>部分中添加checkstyle,pmd,findbugs和javadoc插件的设置以及<properties>位,您可以在其中定义javadoc属性。此外,添加对maven-clean-plugin阶段附加的clean的显式调用。然后只需调用构建:

mvn -Pjenkins site:site

如果愿意,您甚至可以将defaultGoal设置为site