Performance Maven 3是否比Maven 2提供更好的性能?

Performance Maven 3是否比Maven 2提供更好的性能?,performance,maven-2,maven-3,Performance,Maven 2,Maven 3,我试过简单的方法: mvn clean install -Dmaven.test.skip.exec=true 从Maven2(2.2.1)切换到Maven3(3.0.4-3.0.3)。 但是Maven2用于构建的时间更少!对于Maven2在16分钟内构建的项目,Mave3在20分钟内构建。 但是,在stackoverflow上,我发现比Maven3有更好的性能。我应该为Maven3创建另一个本地存储库(我使用Maven2创建的旧存储库)还是使用其他选项? 谢谢。您可以尝试Maven 3的-

我试过简单的方法:

 mvn clean install -Dmaven.test.skip.exec=true
从Maven2(2.2.1)切换到Maven3(3.0.4-3.0.3)。 但是Maven2用于构建的时间更少!对于Maven2在16分钟内构建的项目,Mave3在20分钟内构建。 但是,在stackoverflow上,我发现比Maven3有更好的性能。我应该为Maven3创建另一个本地存储库(我使用Maven2创建的旧存储库)还是使用其他选项?
谢谢。

您可以尝试Maven 3的-T选项,它提供了并行执行部分生命周期的可能性

摘自--help输出:

-T,--threads <arg>                     Thread count, for instance 2.0C
                                        where C is core multiplied
-T,--threads线程数,例如2.0C
式中,C是核乘以

但这取决于您使用的插件版本,前提是它们已经是最新的并且正确地标记了@threadsafe。但有时值得一试

Maven 3应该比Maven 2快。当然,对于某些边缘情况,总是存在性能回归的可能性。我不确定您的问题出在哪里,但我首先要看看哪个阶段需要更长的时间,并将其与Maven 2构建进行比较,例如:

  • 这是多模块构建还是单模块构建
  • 构建是否包含非标准的构建扩展,例如
    maven bundle插件
  • 构建是否使用最新版本的插件?
    maven编译器插件
    为版本2.4.0中的多模块项目带来了良好的性能改进
  • 构建是否引用具有版本范围的工件?我记得早期Maven 3.0.x版本在性能方面存在一些问题
  • 您的POM中是否所有插件版本都已修复?Maven 3可能会带来性能下降的新插件版本

一旦你缩小了根本原因的范围,你可以自己修复它——如果可能的话——或者向maven插件或maven core提交一份bug报告。

我可以假设一部分时间花在了下载工件上。您能否在第2版和第3版上执行此命令2次并共享您的结果?在我们所有的项目中,第三版的表现都要好一点。我已经做了很多次构建来排除工件的下载。稍微好一点-似乎没什么。哪些方面是最耗时的部分?单元测试?编译程序?你查过了吗?您是否正确地修复了所有插件版本,以便在比较它们时获得真正准确的结果?如果您阅读问题-您将看到:-Dmaven.test.skip.exec=trueI有一个核心。我试过使用-T-没有更好的,而且不是所有的插件都是线程安全的。@khmarbaise:为什么?即使在单个内核上使用多个线程也有帮助:如果一个线程被阻塞,等待I/O,那么另一个线程可以进行计算。即使在单个内核上,这也会提高性能。诚然,问题是,在一个Maven构建中,这样的星座是否足够频繁,值得这么麻烦。@JoachimSauer理论上你是对的,但在实践中,我怀疑是否能获得可衡量的改进。