Tag: 连续部署

如何阻止Maven的validation阶段重建工件?

想象一下使用Maven构建的Java项目,我有: 一些快速运行的unit testing: 开发人员应该在提交之前运行 我的CI服务器(Hudson,FWIW)应该在检测到新提交时运行,在出现故障时提供几乎即时的反馈 一些慢速运行的自动验收测试: 开发人员可以选择运行,例如重现和修复故障 我的CI服务器应在成功运行unit testing后运行 这似乎是一个典型的场景。 目前,我正在运行: 该单元在“测试”阶段进行测试 “validation”阶段的验收测试 配置了两个CI作业,两者都指向项目的VCS分支: “Commit Stage”,运行“mvn package”(编译和unit testing代码,构建工件),如果成功,则触发: “自动验收测试”,运行“mvn verify”(设置,运行和拆除验收测试) 问题是作业2unit testing并重新构建被测工件(因为validation阶段会自动调用包阶段)。 由于几个原因(重要性降低),这是不可取的: 作业2创建的工件可能与作业1创建的工件不同(例如,如果同时存在新的提交) 将反馈循环延长到进行提交的开发人员(即他们需要更长时间才能发现他们破坏了构建) 在CI服务器上浪费资源 所以我的问题是,如何配置作业2以使用作业1创建的工件? 我意识到我可以只有一个运行“mvn verify”的CI作业,它只会创建一次工件,但是我想拥有上面描述的单独的CI作业,以实现Farley风格的部署管道。 万一它可以帮助任何人,这里是接受答案中“项目2”的完整Maven 2 POM: 4.0.0 com.example.cake cake-acceptance 1.0 jar Cake Shop Acceptance Tests Runs the automated acceptance tests for the Cake Shop web application. org.apache.maven.plugins maven-compiler-plugin 2.3.1 […]