Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 您更喜欢哪种方法来改进maven项目的增量构建?_Java_Maven_Maven Plugin - Fatal编程技术网

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

Java 您更喜欢哪种方法来改进maven项目的增量构建?,java,maven,maven-plugin,Java,Maven,Maven Plugin,我将优化构建项目的时间。最耗时的事情之一是项目的汇编 由于此处特别提到的maven的已知问题: 我们必须在每次构建过程之前使用mvn clean 我调查了这个问题,发现了两种方法: 我已经测试过了,看起来不错。正如我看到的,实现了几乎相同的功能,但是应该指定特殊的命令来实现结果(例如mvn reactor:make) 所以我得出的结论是,只有开发人员要在本地计算机上优化建筑物的时间,他们才更方便。但我有一些犹豫,因为它是托管的,而且(我认为)作为官方maven插件受到支持,但托管在java.

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

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

我调查了这个问题,发现了两种方法:

  • 我已经测试过了,看起来不错。正如我看到的,实现了几乎相同的功能,但是应该指定特殊的命令来实现结果(例如mvn reactor:make)

    所以我得出的结论是,只有开发人员要在本地计算机上优化建筑物的时间,他们才更方便。但我有一些犹豫,因为它是托管的,而且(我认为)作为官方maven插件受到支持,但托管在java.net上

    我的问题是:

  • 我的结论是这两个插件解决了几乎相同的问题,对吗
  • 有没有人有使用这两个插件的经验,并且能够给出关于它们的任何反馈
  • 你对建筑的优化还有其他想法吗

  • 你试过使用詹金斯(或哈德逊)吗?它非常好,管理着许多小的、相互依赖的项目。在服务器上进行设置也非常容易。我建议至少尝试一下。设置服务器并配置20个maven项目只需几分钟


    我喜欢它的一点是,它将监控您的源代码管理并每X分钟执行一次构建,它将自动连续构建任何上游项目。

    当您只想在构建中构建模块的一个子集时,reactor插件更适合您,增量插件的目标更多的是只构建自上次编译以来发生变化的模块

    虽然我可以看到您使用这两种方法都达到了相同的效果,但根据您所说的,您可能对增量构建插件更感兴趣。我不知道,如果模块/依赖项有未编译的更改,是否可以将这两个功能结合使用,以确保只构建所需的模块/依赖项


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

    上述两个插件都不会加快用例的编译速度。如果您想加快编译速度,我建议您使用并行构建支持更新到maven 3

    然而,除了reactor插件的svn相关特性外,上述插件的功能也可以通过maven3实现。为此,你需要詹金斯,如前一篇文章所述

    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)
    

    我的问题是:编译需要多长时间?考试需要多长时间?这两者之间的关系如何?Hudson/Jenkins没有优化构建(这是OP的问题)。此外,当构建需要花费很长时间时,使用H/J将无助于本地构建