我正在使用本地工件代理请求,但构建和测试阶段仍然有点慢。实际的编译和测试不是很慢,而是<!> quot; warmup <!> quot; maven2框架。有什么想法吗?

有帮助吗?

解决方案

有一些可能性来优化某些构建任务。例如,使用简单的技巧 - 重命名'target'文件夹而不是删除,可以将“干净”任务从几分钟到几毫秒进行优化。

要了解详细信息,请参阅加速Maven构建

其他提示

我不知道你正在使用什么版本的Maven,我假设2,但是我将把我用于Maven 1.x的内容加速并使事情变得更快一些。

这会将junit测试分成一个新进程(当你在测试中使用环境变量等时也有帮助,并为测试提供更多的内存。

-Dmaven.junit.fork=true
-Dmaven.junit.jvmargs=-Xmx512m

这会为您提供可能加速的编译

-Dmaven.compile.fork=true

我希望这可以帮助一点,尝试一下。

另请参阅

如果您使用的是Maven3($ 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] ------------------------------------------------------------------------

正如我们所看到的,差异几乎是一分钟,接近20-30%的速度提升。

  1. 将内存配置调整为最佳,例如:将此行添加到mvn.bat 设置MAVEN_OPTS = -Xmx512m -XX:MaxPermSize = 256m

  2. mvn的清洁阶段通常会删除目标文件夹。相反,如果我们重命名目标文件夹,清洁阶段会更快。<!> lt; quickClean <!> gt;

  3. -Dmaven.test.skip = true将跳过测试执行。

  4. 将-Denforcer.skip = true添加到mvn命令行参数(这是强制执行maven,jdk等版本,我们可以在初始运行后跳过它)

  5. 在构建阶段禁用非关键操作:分析,javadoc生成,源包装。这将节省大量时间。

  6. Spawnig新流程也有助于改善时间 -Dmaven.junit.fork = true(将junit测试分成新进程) -Dmaven.compile.fork = true(分组编译)

    希望有所帮助。

您可以使用-DskipTests=true跳过单元测试。这将加快构建

我发现解析反应堆项目比单pom项目慢得多。如果您的构建是reactor(多模块)并且您的开发人员不同时处理所有模块,则可以删除父POM并单独构建它们,使用本地repo解析依赖项。缺点是您需要安装或部署模块,以便其依赖者查看更改。

此外,您可能希望查看包含一些显着速度改进的新Maven 2.1 M1。

如果这些都没有帮助,请发布有关项目配置(模块结构和插件),命令行参数和硬件配置(内存和磁盘)的更多详细信息。使用-X运行Maven也可能会显示它花费的时间。

我使用本地安装的Nexus。

最初,您应该使用等内容对您的构建时间进行更精细的分析。并确定占用时间最多的候选人。

每次测试都会测试H2数据库吗?下载外部jar文件需要时间吗?这将指导您的调查重点。只是应用快速标记通常不会正常工作,因为默认情况下它们已经被包含在内,并且您不希望使用跳过标记来牺牲您的测试。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top