您更喜欢哪种方法来改善maven项目的增量构建?

时间:2012-02-16 07:05:56

标签: java maven maven-plugin

我将优化构建项目的时间。最耗时的事情之一是项目的汇编。

由于此处特别提到的maven的已知问题: Maven incremental building 我们必须在每个构建过程之前使用 mvn clean

我调查了这个问题并找到了两种方法:

  1. Incremental-build-plugin Maven Mojo
  2. Maven 2 Reactor Plugin
  3. 我测试了Incremental-build-plugin Maven Mojo,看起来非常不错。我看到Maven 2 Reactor Plugin实现了几乎相同的功能,但应指定特殊命令来实现结果(例如, mvn reactor:make )。

    所以我得出的结论是Maven 2 Reactor Plugin只对开发人员来说更方便,如果他们要优化本地计算机上建筑物的时间。但我有一些犹豫,因为托管了Maven 2 Reactor Plugin并且(我认为)支持官方maven插件,但Incremental-build-plugin Maven Mojo托管在java.net上。

    我的问题是:

    1. 我的结论是这两个插件解决了几乎相同的问题吗?
    2. 是否有任何人使用这两种插件并能够提供有关它们的任何反馈?
    3. 您对建筑物的优化还有其他想法吗?

3 个答案:

答案 0 :(得分:4)

上面提到的两个插件都不会加快你的用例的编译时间。如果你想加快你的编译时间,我建议你使用并行构建支持更新到maven 3。

然而,除了反应器插件的svn相关特征之外,使用maven3开箱即可实现上述插件所做的工作。为此,你需要上一篇文章中提到的jenkins。

有用的maven 3功能可加快您的构建速度:

mvn clean compile -T 3 (using three threads for paralell builds)

mvn -amd -pl groupid:arifactId (builds the specified projects and all dependent artifacs)

答案 1 :(得分:0)

当你想在一个构建中只构建你的模块的一个子集时,反应器插件就更适用了,增量插件更多的目的是构建那些自上次编译以来已经改变的模块。

虽然我可以看到你使用相同的效果,但你可能对你所说的增量构建插件更感兴趣。是否可以将两者结合使用,以确保只有在我们不知道的未编译更改时才构建所需的模块/依赖项。

PS - 我认为在最新的增量构建插件版本中修复了干净的bug。

答案 2 :(得分:-1)

你尝试过使用Jenkins(或Hudson)吗?这是非常好的,并管理许多小的,依赖项目。在服务器上设置也很容易。我建议至少尝试一下。设置服务器并配置20个maven项目只需几分钟。

我喜欢它的是它会监视你的源代码控制并每隔X分钟执行一次构建,它会自动连续构建任何上游项目。