我可以将maven编译/包和测试分成两个步骤,而不必不必要地重建工件吗?

时间:2013-06-03 16:03:24

标签: maven build

我有一个大型构建,其中测试有时会阻止创建工件,因为它们因make模块超时而停止或终止构建。我喜欢我的构建服务器:

  • 构建和发布工件
  • 运行单元/集成测试

目前,在典型的maven方式中,每个模块的测试和集成测试阶段都会执行单元和集成测试。这对开发人员来说非常好,但却存在缺乏构建的风险。构建服务器可以通过跳过测试来轻松设置构建/发布步骤,并且我希望运行仅测试测试,该测试通过仅运行测试的包阶段跳过进程资源。但是,我相当肯定maven会再次遍历所有前面的阶段。

我希望通过不必要地重建和重新打包我的工件来避免延长已经很长的构建。

有没有人拆分这样的maven构建,以便桌面开发人员获得测试集成的好处,构建服务器/持续集成系统可以将风险测试推到流程的最后,因此我们始终生产工件

我是否试图以错误的方式打破构建,并应考虑在一系列较小的组件构建中更改单片端到端构建?

由于

彼得

2 个答案:

答案 0 :(得分:4)

以下是您可以这样做的方法:

  1. 您可以运行maven并跳过所有测试来安装/部署您的工件
  2. 然后你可以再次运行它,但这次只运行测试
  3. 像这样:

    mvn install -DskipTests
    mvn surefire:test failsafe:integration-test
    

    如果你必须在一个命令行上完成所有这些,我相信你可以通过拥有两个配置文件来解决问题。一个跳过测试,一个只运行测试。

答案 1 :(得分:1)

您可以将测试放入他们自己的模块中,这些模块依赖于他们测试的模块,然后根据需要使用配置文件来包含/排除测试模块。