maven - 使用 maven 进行分布式构建?

标签 maven build parallel-processing distributed

目前,我们有一个 Maven 项目,其中包含数千个需要两个小时才能运行的测试。我们尝试并行运行这些,但由于它们是功能测试,每个测试都以特定方式配置系统,这会导致竞争条件和随机测试失败。我想做的是在 AWS 上启动 N 个服务器,然后让 maven 将我的测试分开并在这些服务器上运行它们(每个服务器将依次运行其测试,但所有服务器将并行运行),然后汇总结果.有没有插件可以做这样的事情?我已经看到一些接近我想要在 Jenkins 中实现的东西,但我更喜欢它是 maven 驱动的,这样开发人员可以在没有安装 Jenkins 的情况下在本地使用它。

最佳答案

我不知道有任何插件可以立即完成所有这些工作,但我相信这项工作可以完成。

我发现自己在不得不拆分工作时使用了迭代器插件。请参阅此处的示例:http://khmarbaise.github.io/iterator-maven-plugin/

要进行实际的上传和执行,一个建议可能是使用 ant 插件将项目 scp 过来,然后使用 sshexec 执行它。

   <build>
    ...
    <plugins>
    ...
      <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <configuration>
          <tasks>
            <scp todir="${scp.user}:${scp.password}@${scp.host}:/${scp.dirCopyTo}" trust="true" failonerror="false">
              <fileset dir="${bundle.dir}" />
            </scp>
            <sshexec host="${scp.host}"
                username="${scp.user}"
                keyfile="${user.home}/.ssh/id_dsa"
                command="touch somefile"/>
          </tasks>
        </configuration>
        <dependencies>
          <dependency>
            <groupId>ant</groupId>
            <artifactId>ant-jsch</artifactId>
            <version>1.6.5</version>
          </dependency>
          <dependency>
            <groupId>com.jcraft</groupId>
            <artifactId>jsch</artifactId>
            <version>0.1.42</version>
          </dependency>
        </dependencies>
      </plugin>
...

关于maven - 使用 maven 进行分布式构建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25406404/

相关文章:

java - 无法执行目标 org.sonarsource.scanner.maven :sonar-maven->plugin:3. 0.1:sonar (default-cli)

GCC 和链接环境变量和标志

c - 如何将 time_t 变量打印为 float ?

c - MPI共享内存同步问题

java - 使用 TREAT( ... as ... ) 将查询向下转换为子类时出现异常

java - 使用 log4j-web.jar 在 Web 应用程序中配置 Log4j2

java - gradle 存储库指向具有多个库的本地目录

gradlew assembleDebug 需要我的发布 key 密码

git - 在 Jenkins/Maven 中只构建受影响的模块

JavaScript 数组问题