0

我正在使用 maven-invoker-plugin 运行大约 20 个集成测试。我想使用并行线程,这很简单——只需添加适当的配置元素。

我的问题是我正在使用一个隔离的自定义本地存储库。当我同步运行测试时,第一个需要 130 秒左右,因为它会下载完整的 maven 插件集和执行构建所需的其他部分。其余的时间约为 5-10 秒。当我添加 parallelThreads=5(例如)时,我的前五个测试并行运行,但都安装了相同的依赖关系图。

我尝试使用 来创建一个首先运行的项目,该项目将有效地启动所有集成测试共享的本地存储库。

没运气。如果我去parallelThreads = 5,我会得到我的设置项目以及其他人,所有这些都同时运行。我想要的是一种让这样的设置项目在所有其他项目之前运行的方法,即使并行线程是复数。

我已经试验过了。但是,这要求我明确列出每个版本的每个工件、要安装的工件以及不计算传递依赖项(似乎)。我最终需要管理一个非常脆弱的依赖项列表。

4

1 回答 1

1

maven-invoker-plugin 的配置有机会运行setupIncludes但不幸的是,目前maven-invoker-plugin 中存在一个错误,该错误在这种情况下完全失败

但是您可以通过使用这样的extraArtifact配置来解决这个问题:

    <executions>
      <execution>
        <id>pre-integration-tests</id>
        <goals>
          <goal>install</goal>
        </goals>
        <configuration>
          <extraArtifacts>
            <extraArtifact>junit:junit:4.8:jar</extraArtifact>
            <extraArtifact>com.soebes.maven.plugins:maven-echo-plugin:0.1:maven-plugin</extraArtifact>
            <extraArtifact>org.apache.maven.surefire:surefire-junit4:2.10:jar</extraArtifact>
            <extraArtifact>org.apache.maven.plugins:maven-surefire-plugin:2.10:maven-plugin</extraArtifact>
            <extraArtifact>org.apache.maven.plugins:maven-assembly-plugin:2.4:maven-plugin</extraArtifact>
            <extraArtifact>org.apache.maven.plugins:maven-war-plugin:2.1.1:maven-plugin</extraArtifact>
            <extraArtifact>org.apache.maven.plugins:maven-resources-plugin:2.6:maven-plugin</extraArtifact>
            <extraArtifact>org.apache.maven.plugins:maven-resources-plugin:2.5:maven-plugin</extraArtifact>
            <extraArtifact>org.apache.maven.plugins:maven-resources-plugin:2.4.3:maven-plugin</extraArtifact>
          </extraArtifacts>
        </configuration>
      </execution>

因此,您可以定义集成测试期间所需的所有依赖项。要么是插件,要么是通常的依赖项。

于 2013-05-28T07:52:27.497 回答