我正在使用本地工件代理请求,但构建和测试阶段仍然有点慢。实际的编译和测试不是很慢,而是maven2框架的“热身”。有什么想法吗?
答案 0 :(得分:23)
有一些可能性来优化某些构建任务。例如,使用简单的技巧 - 重命名'target'文件夹而不是删除,可以将“干净”任务从几分钟到几毫秒进行优化。
要了解详细信息,请参阅Speed up Maven build。
答案 1 :(得分:9)
我不知道你正在使用什么版本的Maven,我假设2,但是我将把我用于Maven 1.x的内容加速并使事情变得更快一些。
这会将junit测试分成一个新进程(当你在测试中使用环境变量等时也会有所帮助,并为测试提供更多的内存。
-Dmaven.junit.fork=true
-Dmaven.junit.jvmargs=-Xmx512m
这会为您提供可能加速的编译
-Dmaven.compile.fork=true
我希望这可以帮助一点,尝试一下。
答案 2 :(得分:4)
将内存配置调整为最佳,例如:将此行添加到mvn.bat 设置MAVEN_OPTS = -Xmx512m -XX:MaxPermSize = 256m
mvn的清洁阶段通常会删除目标文件夹。相反,如果我们重命名目标文件夹,清洁阶段会更快。< quickClean>
-Dmaven.test.skip = true将跳过测试执行。
将-Denforcer.skip = true添加到mvn命令行参数(这是强制执行maven,jdk等版本,我们可以在初始运行后跳过它)
在构建阶段禁用非关键操作:分析,javadoc生成,源包装。这将节省大量时间。
Spawnig新流程也有助于改善时间 -Dmaven.junit.fork = true(将junit测试分成新进程) -Dmaven.compile.fork = true(分组编译)
希望有所帮助。
答案 3 :(得分:3)
您可以使用-DskipTests=true
跳过单元测试。这将加快构建
答案 4 :(得分:2)
我发现解析反应堆项目比单pom项目慢得多。如果您的构建是reactor(多模块)并且您的开发人员不同时处理所有模块,则可以删除父POM并单独构建它们,使用本地repo解析依赖项。缺点是您需要安装或部署模块,以便其依赖者查看更改。
此外,您可能希望查看包含一些显着速度改进的新Maven 2.1 M1。
如果这些都没有帮助,请发布有关项目配置(模块结构和插件),命令行参数和硬件配置(内存和磁盘)的更多详细信息。使用-X运行Maven也可能会显示它花费的时间。
答案 5 :(得分:1)
我使用本地安装的Nexus。
答案 6 :(得分:0)
最初,您应该使用类似this的内容对构建时间进行更精细的分析,并确定占用时间最多的候选项。
每次测试都会测试H2数据库吗?下载外部jar文件需要时间吗?这将指导您的调查重点。只是应用快速标记通常不会像默认情况下已经包含的那样工作,并且您不希望用跳过标记来牺牲您的测试。