准备构建环境

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

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

<project>
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-invoker-plugin</artifactId>
        <version>3.2.2</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也匹配 path utility-plugin/pom.xml,但该项目不会运行两次。换句话说,双方选择的任何项目都<setupIncludes>只会<pomIncludes>运行一次,即在设置阶段。

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