在没有清洁的Maven中构建

问题描述:

当我们构建Maven项目而没有执行mvn clean时,我们有时会得到“Voodoo错误”,例如NoSuchMethodError。我相信这些是由移动/重命名文件造成的。在没有清洁的Maven中构建

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

您应该始终在CI构建中使用clean。 CI构建必须具有可重复性,并且需要从头开始!

关于这个过程需要更长的时间:使用CI(其中一个很重要)的全部要点是您可以在运行时继续工作,所以这不应该是一个问题。

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

  • 第一份工作编译并执行一些基本的测试*,这个版本应该不到5分钟
  • 如果成功,第二作业执行所有测试*,代码度量的javadoc等
  • 如果成功第三工作部署构建到测试服务器

(或者你可以让第一份工作的同时触发同时第二和第三个作业)

*您可以实现一些测试/通过配置每个配置文件不同的行家万无一失插件)

+0

这是一个问题,当你有40人承诺对同一个主干。您希望尽可能快地获得关于谁尽可能快地破坏CI的反馈,尽可能以最小的delta值获得反馈。今天我们的一些构建需要20-30分钟,然而我们尽可能缩短它。 – ripper234 2010-11-22 11:06:48

+1

我想说40个人对于一个代码库来说太大了。将项目拆分成单独的模块(我希望它可能已经是这样),并为一个或多个这些模块独立运行CI作业。但不使用清洁不是答案。 – 2010-11-22 11:10:24

所有测试功能,我们有三个构建目标:

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

  • 每晚:做一个干净的构建和运行每一个单一的测试。这每晚都会运行。成功部署到测试服务器。

  • Release:与Nightly plus一样创建源代码控制标签。手动运行。

每晚构建更可靠,因为干净的构建进行。然而,CI构建更快意味着在这些场合反馈速度更快。

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