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

Tho*_*sen 5 continuous-integration hudson maven-3 maven jenkins

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

mvn clean install -DDISABLED="javadoc:aggregate" checkstyle:checkstyle pmd:pmd findbugs:findbugs
Run Code Online (Sandbox Code Playgroud)

我想整合这个,以便调用字符串存储在POM中的某个位置以及合适的配置文件信息,因此我们可以用一个稍微不同的作业替换调用字符串.

mvn -Pjenkins
Run Code Online (Sandbox Code Playgroud)

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

Koh*_*chi 4

您可以在配置文件中配置其他 mojo,并且可以将 mojo 绑定到生命周期阶段。这两件事结合在一起将允许您在给定特定配置文件时运行额外的魔力。

这是 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 ...
Run Code Online (Sandbox Code Playgroud)

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

请参阅Jenkins 核心中的 POM,了解我们调用 FindBugs 的完整示例。其他的mojo基本都是一样的。

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