用法

此页面提供一般使用信息以及基本示例。该插件通常用于运行和验证项目的集成测试,例如 Maven 插件。这是使用 invoker:run 目标完成的。作为集成测试的准备工作,人们通常希望将测试中的工件暂存到测试存储库中。对于这项工作, invoker:install 可以使用目标。

基本示例

以下示例演示了用于运行集成测试的基本插件配置。让我们假设您的项目的目录结构如下:

./
+- pom.xml
+- src/
   +- it/
      +- settings.xml
      +- first-it/
      |  +- pom.xml
      |  +- src/
      +- second-it/
         +- pom.xml
         +- invoker.properties
         +- test.properties
         +- verify.bsh
         +- src/

在此示例中,目录src/it是所有 IT 项目所在的位置。您只需将每个集成测试放入一个不同的子目录中,如first-it和所示second-it。此示例的插件配置如下所示:

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-invoker-plugin</artifactId>
        <version>3.2.2</version>
        <configuration>
          <cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>
          <settingsFile>src/it/settings.xml</settingsFile>
          <localRepositoryPath>${project.build.directory}/local-repo</localRepositoryPath>
          <postBuildHookScript>verify</postBuildHookScript> <!-- no extension required -->
        </configuration>
        <executions>
          <execution>
            <id>integration-test</id>
            <goals>
              <goal>install</goal>
              <goal>run</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  ...
</project>

现在,为了让事情顺利进行,只需告诉 Maven 执行生命周期阶段integration-test

  mvn integration-test

首先,invoker:install目标将在该阶段执行,pre-integration-test并将项目的主要工件连同任何附加的工件复制到target/local-repo. 此外,项目的任何本地可访问的父 POM 都将被复制到暂存存储库。最后但同样重要的是,如果您正在运行 reactor 构建,则驻留在 reactor 中的所有项目依赖项也将被暂存。

接下来,invoker:run目标将在该阶段执行integration-test,并将使用配置的包含/排除模式在目录中搜索src/itIT POM。找到 IT POM 的每个目录都将被复制到target/it. 此外,IT POM 将被过滤,即表达式 like@project.version@将替换为项目 POM 中的相应值。这对于确保您的 IT POM 始终引用项目工件的当前构建版本特别方便。您还可以通过您希望用于过滤的插件配置定义其他属性。

一旦过滤了 IT POM,就会在它们上启动 Maven 构建。默认情况下,Invoker 插件将package在 IT POM 上执行阶段,但可以在插件配置中全局更改,或者invoker.properties使用second-it. 同样,系统属性可以通过文件传递给 IT 构建test.properties。该文件src/it/settings.xml可用于为测试指定自定义用户设置。除其他外,这允许您使集成测试将本地存储库用作远程存储库,从而避免耗时的下载central以填充最初空的暂存存储库。请参阅示例快速调用程序插件配置有关此技术的更多详细信息。IT 构建的输出被写入一个名为build.log(例如target/it/first-it/build.log)的日志文件,并允许在集成测试失败时进行诊断。

集成测试完成后,插件将调用可选的构建后挂钩脚本。在示例中,这就是second-itwhere verify.bshwill be run 的情况。该脚本的目的通常是检查集成测试的构建是否成功,并且是否产生了预期的输出。查看示例Using a Post Build Script for a code snippet。

只运行一些测试

该插件还支持-Dinvoker.test仅在与参数中使用的模式匹配的目录中运行 IT 的参数。这使您能够快速重新运行单个测试。请参阅此示例命令行:

  mvn invoker:run -Dinvoker.test=*MWAR*,simple*

假设子项目的基目录是src/it,插件只会从与路径src/it/*MWAR*src/it/simple*.