你更喜欢哪种改进Maven项目增量构建的方法?

12

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

由于特别提到的Maven已知问题,具体可以参考: Maven增量构建 我们必须在每个构建过程之前使用mvn clean

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

  1. Incremental-build-plugin Maven Mojo
  2. Maven 2 Reactor Plugin

我测试了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. 我的结论是这两个插件几乎解决了相同的问题吗?
  • 有人有使用这两个插件的经验,并能够对它们提供任何反馈吗?
  • 你有其他优化建筑的想法吗?

  • 我的问题是:编译需要多长时间?测试需要多长时间?它们之间的关系如何? - khmarbaise
    3个回答

    4

    以上提到的两个插件都不能加速您的编译时间。如果您想加快编译时间,我建议您升级到支持并行构建的maven 3。

    然而,使用上述插件所描述的功能也可以在maven3中直接实现,除了反应堆插件的svn相关功能。对于这一点,您需要像前面的帖子中提到的那样使用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)
    

    0

    Reactor插件更适用于在构建过程中仅构建子模块的子集,增量插件更适用于仅构建自上次编译以来发生更改的模块。

    虽然我可以看到您可以使用任何一个插件来达到相同的效果,但从您所说的内容来看,您可能更感兴趣的是增量构建插件。无论您是否可以将两者结合使用以确保仅在需要时构建模块/依赖项,如果它们有未编译的更改,我不知道。

    PS-我认为最新的增量构建插件版本已经修复了清理错误。


    -1

    你尝试过使用Jenkins(或Hudson)吗?它非常适合管理许多小型、依赖性强的项目。而且在服务器上设置也非常容易。我建议至少尝试一下。只需要几分钟就可以设置服务器并配置20个Maven项目。

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


    1
    Hudson/Jenkins并不会优化构建过程(这是OP的问题)。此外,当构建过程需要很长时间时,使用H/J也无法帮助本地构建。 - Attila

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接