5

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

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

我想合并它,以便将调用字符串与合适的配置文件信息一起存储在 POM 中的某个位置,这样我们就可以将所有这些略有不同的作业的调用字符串替换为

mvn -Pjenkins

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

4

3 回答 3

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默认绑定到 compile 阶段,因此它会在编译阶段自动调用。如果您想使用默认情况下不绑定到任何生命周期阶段的 mojo,请添加 <phase>...</phase>。

有关调用 FindBugs 的完整示例,请参阅Jenkins 核心中的 POM 。其他mojo基本相同。

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

于 2013-04-02T15:20:44.507 回答
2

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

于 2013-03-15T08:33:25.607 回答
0

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

mvn -Pjenkins site:site

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

于 2013-04-02T08:59:44.050 回答