我正在使用本地的仓库代理请求,但是构建和测试阶段仍然有点慢。实际的编译和测试并不慢,而是maven2框架的“热身”过程。有什么想法吗?
我正在使用本地的仓库代理请求,但是构建和测试阶段仍然有点慢。实际的编译和测试并不慢,而是maven2框架的“热身”过程。有什么想法吗?
有一些可能性可以优化一些构建任务。例如,使用简单的技巧 - 重命名“target”文件夹而不是删除,可以将“clean”任务从几分钟优化到仅毫秒。
要了解如何执行此操作的详细信息,请参考加速Maven构建。
我不知道你使用的是哪个版本的Maven,我假设你使用的是2.x版本。而我将给出如下用于加速构建过程的Maven 1.x配置:
这些配置将把junit测试进程分离出来(当你在测试中使用环境变量时,它同样会有所帮助,并且为测试提供更多内存)。
-Dmaven.junit.fork=true
-Dmaven.junit.jvmargs=-Xmx512m
这将分叉编译过程,可能会加快速度。
-Dmaven.compile.fork=true
$ mvn -version
),你也可以按照这个指南进行操作。在我的情况下,结果如下:$ mvn clean install
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 03:05 min
[INFO] Finished at: 2015-07-15T11:47:02+02:00
[INFO] Final Memory: 88M/384M
采用并行处理(4个线程):
$ mvn -T 4 clean install
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 02:22 min (Wall Clock)
[INFO] Finished at: 2015-07-15T11:50:57+02:00
[INFO] Final Memory: 80M/533M
并行处理(每个核心2个线程)
$ mvn -T 2C clean install
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 02:12 min (Wall Clock)
[INFO] Finished at: 2015-07-15T12:00:29+02:00
[INFO] Final Memory: 87M/519M
[INFO] ------------------------------------------------------------------------
正如我们所看到的,时间差几乎有1分钟之多,速度提升了20-30%左右。
调整内存配置以达到最佳效果,例如:在mvn.bat中添加以下行 set MAVEN_OPTS=-Xmx512m -XX:MaxPermSize=256m
mvn的清理阶段通常会删除目标文件夹。如果我们将目标文件夹重命名,则清理阶段会快得多。<quickClean>
-Dmaven.test.skip=true将跳过测试执行。
在mvn命令行参数中添加-Denforcer.skip=true(这是强制使用maven、jdk版本等的版本,我们可以在初始运行后跳过它)
在构建阶段禁用非关键操作:分析、javadoc生成、源代码打包。这将节省大量时间。
在生成新进程方面也有助于提高时间效率。 -Dmaven.junit.fork=true(将junit测试分叉到一个新进程中) -Dmaven.compile.fork=true(分叉编译)
希望这些内容能对您有所帮助。
-DskipTests=true
跳过单元测试,从而加快构建速度。我会使用本地安装的Nexus。
最初,您应该使用类似this的工具对构建时间进行更精细的分析,并确定花费最多时间的候选项。
测试是否每个测试都在启动H2数据库?下载外部jar文件是否需要时间?这将指导您在哪里集中调查。仅应用go-fast标志通常不起作用,因为它们已经默认包含在内,而且您不想通过跳过标志来牺牲测试。