Maven 2 在Maven建筑,无需清洁

Maven 2 在Maven建筑,无需清洁,maven-2,build-process,continuous-integration,maven,Maven 2,Build Process,Continuous Integration,Maven,当我们构建一个Maven项目而不执行mvn clean时,我们有时会遇到“巫术错误”,比如NoSuchMethodError。我相信这是由于移动/重命名文件造成的 我不想在CI中使用clean选项,因为它会使构建过程花费更长的时间。还有其他选择吗?您应该始终在CI构建中使用clean。CI构建必须是可复制的,并且需要从头开始 关于耗时较长的过程:使用CI(众多CI之一)的全部意义在于,您可以在它运行时继续工作,因此这应该不是问题 但我喜欢做的是在每个项目中使用多层CI: 第一个作业编译并执行一

当我们构建一个Maven项目而不执行
mvn clean
时,我们有时会遇到“巫术错误”,比如NoSuchMethodError。我相信这是由于移动/重命名文件造成的


我不想在CI中使用clean选项,因为它会使构建过程花费更长的时间。还有其他选择吗?

您应该始终在CI构建中使用clean。CI构建必须是可复制的,并且需要从头开始

关于耗时较长的过程:使用CI(众多CI之一)的全部意义在于,您可以在它运行时继续工作,因此这应该不是问题

但我喜欢做的是在每个项目中使用多层CI:

  • 第一个作业编译并执行一些基本测试*,此构建应不超过5分钟
  • 如果成功,第二个作业将执行所有测试*、代码度量、javadocs等
  • 如果成功,第三个作业会将构建部署到测试服务器
(也可以让第一个作业同时触发第二个和第三个作业)


*您可以通过对maven surefire插件的配置(每个配置文件的配置不同)来实现部分测试/所有测试功能。

我们有三个构建目标:

  • 持续集成:构建时不进行清理,只运行Clover标识的测试。这将在每次提交后运行。成功后,它将部署到测试服务器

  • 每晚:进行干净的构建并运行每个测试。这个每晚都有。成功后,它将部署到测试服务器

  • 发布:与Nightly plus相同,创建源代码管理标签。手动运行

夜间构建更值得信赖,因为执行了干净的构建。但是,CI构建更快,这意味着在这些情况下反馈更快


构建时间存在一个潜在的问题,但这至少是一个解决方法,而您需要寻找更持久的方法来解决这个问题。

如果有40人承诺使用同一个主干,这就是一个问题。您希望尽可能快地、尽可能小地获得关于谁破坏了CI的反馈。今天,我们的一些构建需要20-30分钟,我们正试图尽可能地缩短它。我认为40人对于一个代码库来说太大了。将项目拆分为单独的模块(我希望它可能已经存在),并为其中一个或多个模块独立运行CI作业。但不使用清洁剂永远不是答案。