克隆项目
默认情况下,项目将在找到它们的同一目录中执行。(使用invoker插件的项目是maven-plugin打包的除外。在这种情况下,IT项目将被target/its默认克隆并执行。)这意味着构建输出将与项目文件一起生成。在运行项目之前将项目复制到另一个目录可能会有所帮助,例如target/it. 这将允许mvn clean删除所有测试项目生成的输出。
<project>
...
<build>
<plugins>
<plugin>
<artifactId>maven-invoker-plugin</artifactId>
<version>3.2.2</version>
<configuration>
<projectsDirectory>src/it</projectsDirectory>
<cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>
</configuration>
<executions>
<execution>
<id>integration-test</id>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
...
</project>
除了保持源树没有构建输出之外,将项目克隆到临时位置还有另一个好处。当项目没有被克隆时,插件必须使用临时 POM 来执行它们的过滤。相反,克隆项目使插件能够简单地过滤克隆的 POM。由于 POM 的文件名以这种方式保持不变,因此在 POM 中通过<parent>和<module>元素表示的项目间依赖关系也保持不变。这反过来又允许插件过滤所有参与分叉构建的 POM,而不仅仅是执行的根 POM。
最后但同样重要的是,一旦项目被克隆并通过执行过滤invoker:run,您可以浏览到克隆的项目并在其上手动调用 Maven。这对于调试构建很有用。



