当前位置: 首页 > 知识库问答 >
问题:

如何让maven构建得更快?

宓季同
2023-03-14

我有一个多模块java项目。Maven需要大约40秒来构建它。我也尝试过使用多线程构建的maven,方法是指定-T和-C args来表示要使用的线程和内核的数量。但我还没有看到我构建的墙时间有任何显著的改善
我正在使用maven 3.2.3,有时我需要非常频繁地构建我的项目<我知道清洁目标需要很多时间,但我不能忽略它<请给我一些建议。。。。

编辑:
注意:在我的情况下,清洁不需要太多时间。它在1秒钟内完成。安装需要Rest时间。

共有3个答案

孔俊爽
2023-03-14

你可以使用一些小技巧来优化构建,比如

  1. 如果您已经编写了JUnit测试,并且不想每次都运行测试用例,那么您可以使用-Dski p测试=true
  2. 本地安装Nexus或存储库
  3. 您可以将内存配置调整到最佳状态,例如:将此行添加到mvn.batsetMAVEN_OPTS=-Xmx512m-XX: MaxPermsize=256m

有关更多信息,您可以查看如何加速您的Maven构建

劳和雅
2023-03-14

关于我的实际项目:

  1. mvn清洁安装[INFO]总时间:01:05小时

以下是您需要添加到pom中的内容。xml,如果你想使用这个概念

<properties>
    <timestamp>${maven.build.timestamp}</timestamp>
    <maven.build.timestamp.format>yyyy-MM-dd-HH-mm</maven.build.timestamp.format>
    <trashdir>trash/target-${maven.build.timestamp}</trashdir>
</properties>

    <profile>
        <id>quickclean</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>rename_target</id>
                            <phase>pre-clean</phase>
                            <goals>
                                <goal>run</goal>
                            </goals>
                            <configuration>
                                <tasks>
                                    <move todir="${trashdir}" failonerror="false">
                                        <fileset dir="target/"/>
                                    </move>
                                </tasks>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>
    <profile>
        <id>trashclean</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>clean_trash</id>
                            <phase>clean</phase>
                            <goals>
                                <goal>run</goal>
                            </goals>
                            <configuration>
                                <tasks>
                                    <delete dir="trash/" failonerror="false"/>
                                </tasks>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>
    
邹玮
2023-03-14

使用多线程运行maven build对我来说可以加快构建速度。例如:

mvn clean install -T100

其中-T用于根据硬件指定需要多少线程。

马文3。x有能力执行并行构建。命令如下:

  • mvn-使用4个线程的T4干净安装版本

图中的每个节点代表多模块构建中的一个模块,“级别”简单地表示到内部Reactor依赖关系图中第一个模块的距离。Maven基于声明的多模块构建的模块间依赖关系计算此图。请注意,父maven项目也是一个依赖关系,这解释了为什么在大多数项目图的顶部有一个单一节点。Reactor之外的依赖关系不影响此图。

最后,如果想跳过测试执行,还可以使用-DskipTests

注意:你的一些插件可能不兼容多线程生成器,它可能工作。但是它会给出下面的警告信息。你可能需要看到插件留档多线程支持。

[WARNING] *****************************************************************                                                                                                                                 
[WARNING] * Your build is requesting parallel execution, but project      *                                                                                                                                 
[WARNING] * contains the following plugin(s) that have goals not marked   *                                                                                                                                 
[WARNING] * as @threadSafe to support parallel building.                  *                                                                                                                                 
[WARNING] * While this /may/ work fine, please look for plugin updates    *                                                                                                                                 
[WARNING] * and/or request plugins be made thread-safe.                   *                                                                                                                                 
[WARNING] * If reporting an issue, report it against the plugin in        *                                                                                                                                 
[WARNING] * question, not against maven-core                              *                                                                                                                                 
[WARNING] *****************************************************************                                                                                                                                 
[WARNING] The following plugins are not marked @threadSafe in test-project:                                                                                                                          
[WARNING] de.dentrassi.maven:rpm:0.9.2                                                                                                                                                                      
[WARNING] Enable debug to see more precisely which goals are not marked @threadSafe.                                                                                                                        
[WARNING] *****************************************************************    
 类似资料:
  • 在我的mac上使用Maven构建时,在< code>mvn install上,我得到 [警告]使用平台编码(实际上是MacRoman)来复制过滤的资源,即构建取决于平台! 是否可以为给定平台 (Linux) 构建或以其他方式独立于构建平台?

  • 我如何让IDEA在Ubuntu中运行得更快?我正在一个具有6 gig RAM的i7 thinkpad中运行它。

  • 我们目前没有自己的存储库。因此,当我们使用maven构建时,它将在当前用户的主目录中创建.m2存储库。 现在有两个第三方JAR在Maven Central中找不到。假设其中之一是hasp-srm-api.jar。今天的过程是这样的: a.依赖于hasp-srm-api.jar的项目的pom.xml包含以下行: b.在进行第一次构建之前,我们执行以下命令: 我的问题是这样的--这一步有没有可能自动化

  • 问题内容: 这样做时,我希望在目标目录中包含2个WAR文件。一个将包含 生产 ,而另一个将包含 test / uat 。 我已经试过了: 但是,我最终只能参加测试WAR。 问题答案: 我不认为您可以一步完成此操作(实际上,令Maven没有抱怨您的设置并且不知道应用了哪个设置,我感到很惊讶),我建议您使用配置文件或过滤来管理此使用案件。 如果您确实不同,则可以将maven-war-plugin配置放

  • 我尝试使用mojo插件在Maven中配置sencha cmd。Maven配置如下所示: 我设置了环境变量(在我的示例中,我使用的是Windows操作系统)。当我尝试执行命令时,会出现错误: 未能在project Vehicle-Store上执行goal org.codehaus.mojo:exec-maven-plugin:1.3.2:exec(sencha-compile):命令执行失败。无法运