准备构建环境

通常,插件假定要构建的项目彼此无关,因此它们的构建顺序无关紧要。但是,您有时可能希望确保某些项目先于其他项目构建。作为一种动机,假设一个项目为其他项目执行某种通用设置,例如将实用程序工件安装到本地存储库中。

从插件版本 1.3 开始,您可以通过参数<setupIncludes>声明一组必须在所有其他项目之前运行的设置项目,如下例所示:

<project>
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-invoker-plugin</artifactId>
        <version>1.9</version>
        <configuration>
          <setupIncludes>
            <setupInclude>utility-plugin/pom.xml</setupInclude>
          </setupIncludes>
          <pomIncludes>
            <pomInclude>*/pom.xml</pomInclude>
          </pomIncludes>
        </configuration>
        <executions>
          <execution>
            <id>integration-test</id>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>

这告诉插件项目utility-plugin/pom.xml必须在模式*/pom.xml选择的其他项目之前运行。请注意,虽然*/pom.xml模式也与路径utility-plugin/pom.xml匹配,但该项目不会运行两次。换句话说,<setupIncludes><pomIncludes>选择的任何项目都只会运行一次,即在设置阶段。

几个此类设置项目的构建顺序仍未定义。因此,如果设置项目具有需要特定构建顺序的相互依赖关系,您应该通过聚合器 POM 对它们进行分组并将其提供给 Invoker 插件,这样正确的构建顺序将由 Maven 的多模块反应器确定。