【发布时间】:2015-11-06 07:49:45
【问题描述】:
我有一个包含多个 maven 模块的项目。由于这些模块之间存在如此多的依赖关系,我必须构建整个项目,而不是构建一些我需要测试的模块。构建需要很长时间。
有没有什么方法可以通过 shell 命令在我的服务器上运行 maven build 来加速这个过程?
我在mvn 参数中尝试了-T 标记的多种变体,但没有一个有助于加快构建过程。
帮助?有人吗?
【问题讨论】:
标签: maven optimization
我有一个包含多个 maven 模块的项目。由于这些模块之间存在如此多的依赖关系,我必须构建整个项目,而不是构建一些我需要测试的模块。构建需要很长时间。
有没有什么方法可以通过 shell 命令在我的服务器上运行 maven build 来加速这个过程?
我在mvn 参数中尝试了-T 标记的多种变体,但没有一个有助于加快构建过程。
帮助?有人吗?
【问题讨论】:
标签: maven optimization
Maven 并不神奇。如果您的构建过程很慢,那么您必须对其进行分析,确定哪些部分很慢,然后找出改善情况的方法。
第一步是查看 Maven 在构建结束时报告的时间。在这里您可以看到最需要哪些模块。
构建缓慢的几个常见原因:
【讨论】:
您可以做的一件事是使用 -X 或 -debug 从 maven 日志中读取输出,然后为正在执行但不需要的任何内容添加以下内容:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<executions>
<execution>
<id>default-testCompile</id>
<phase>none</phase>
</execution>
</executions>
</plugin>
例如,您可以通过将上面的执行行添加到您的 pom 来跳过运行的 testCompile 阶段。
之前在日志中:
[DEBUG] Goal: org.apache.maven.plugins:maven-compiler-plugin:3.2:testCompile (default-testCompile)
[DEBUG] Style: Regular
[DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?>
在日志中之后:它根本不显示。
这样做时要小心,不要删除任何重要的东西。
【讨论】:
如果目标是加快 CI 服务器构建,但只重建受更改影响的模块,hashver-maven-plugin 旨在解决这个问题:https://github.com/avodonosov/hashver-maven-plugin
【讨论】: