如何高效快速地编译Maven项目

11

我有一个包含13个子模块的Maven项目。我有两个问题,如何优化构建过程:

  1. 我只想为 x86-64 服务器编译 Java 代码。我该如何配置 Maven 实现这一点?
  2. 我有一个拥有4个CPU核心的服务器,是否可以使用多线程编译代码?
5个回答

15

2) mvn package -T 2C 命令可以使用每个 CPU 核心的 2 线程进行构建。


默认情况下,您不需要更改pom.xml中的任何内容。请注意,您可能会遇到非线程安全的Maven插件问题。如果有这些插件的新版本(即线程安全版本),建议尝试更新pom中的插件版本。 - Korgen

11
  1. 我想只针对x86-64服务器编译Java代码。我该如何配置Maven来实现呢?

Java是跨平台的,您无法让它只编译为x86-64。

2. 我有一个拥有4个CPU核心的服务器。是否可以使用多线程编译代码?

javac是多线程的。它可能不会使用您拥有的所有内核,但这已经是您可以做到的最多线程了。

正如Andrew所指出的那样,您可以使构建变成多线程,从而导致测试同时运行(可能会破坏您的测试),但这并不能使编译并发运行。


你可以将针对x86-64的特定构建放在一个仅在x86-64下激活的Maven配置文件中。请参考http://www.sonatype.com/books/mvnref-book/reference/profiles-sect-activation.html。 - radai
@radai 你说得对,但是无论如何,生成的字节码都可以在任何操作系统/架构上执行,因此没有特定的配置来构建仅适用于x86-64的字节码。只有在x86-64上编译时才有一种构建方式。 - Jean-Rémy Revy
我理解这个问题的意思是,OP拥有构建的一部分,只与x86-64机器相关。 - radai
你提供了我搜寻了几个小时才找到的所有信息 :) - vach

5

4

有一段时间我读到了关于这个POM配置来提高编译器性能的内容。

       <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-compiler-plugin</artifactId>
           .....
           <dependencies>
               <dependency>
                   <groupId>org.codehaus.plexus</groupId>
                   <artifactId>plexus-compiler-javac</artifactId>
                   <version>1.8.6</version>
               </dependency>
           </dependencies>
       </plugin>

我没有尝试过,但这对你可能很有趣。 该改进的解释可以在这里找到。

现在这个很有趣。你知道这是否成为编译器插件的某个新版本的默认设置吗? - radai
1
@radai,我刚刚检查了maven-compiler-plugin的当前版本2.5.1,它已经依赖于plexus-compiler-javac:1.9.1(请参见此处)- 所以如果您正在运行旧版本的maven,则此答案才有意义。 - FrVaBe
对我来说,它提高了构建速度。 - Gábor Lipták

2

除了上面提到的并行构建(-Tn标志)之外,还可以尝试将各种额外的东西隐藏在配置文件中 - 默认关闭测试,进行各种标记、代码分析、向远程仓库分发等,这些都是可选的。

您还可以尝试为Maven分配更多的内存(MAVEN_OPTS环境变量)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接