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

Pet*_*ahn 4 build maven

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

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

目前,单元测试和集成测试以典型的 Maven 方式在每个模块的测试和集成测试阶段执行。这对于开发人员来说非常有用,但也带来了缺乏构建的风险。构建服务器可以通过跳过测试来轻松设置构建/发布步骤,我想运行一个仅测试的测试,该测试通过仅运行测试的包阶段跳过进程资源。不过,我相当确定maven会再次遍历前面的所有阶段。

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

有没有人像这样拆分 Maven 构建,以便桌面开发人员获得测试集成的好处,而构建服务器/持续集成系统获得将有风险的测试推到流程末尾的好处,这样我们总是会产生工件?

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

谢谢

彼得

Dan*_*lan 5

执行此操作的方法如下:

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

就像这样:

mvn install -DskipTests
mvn surefire:test failsafe:integration-test
Run Code Online (Sandbox Code Playgroud)

如果您必须在一个命令行上完成这一切,我相信您可以通过两个配置文件来解决问题。一种跳过测试,一种仅运行测试。