解决Maven多模块编译慢的问题

 更新时间:2021年09月22日 14:16:20   作者:长风2015  
这篇文章主要介绍了Maven多模块编译慢的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Maven多模块编译慢

最近在部署项目时发现,Maven编译打包相当耗时,比之前项目用Gradle慢了很多倍,特别是对于WEB工程,打war包花的时间很长,在unix主机下一般会用到3到4分钟,如果有多个WEB工程,那简直不能忍受,经过查找资料并结合本人真实验证,原本编译打包需要8分钟的项目,优化编译后时间减少至34秒。

如下图:

其中下面标红两个工程为WEB工程。下面来说一下进行了哪些优化:

  • 1、增加跳过测试代码的编译命令 -Dmaven.test.skip=true ;
  • 2、增加编译-Dmaven.compile.fork=true 参数,用以指明多线程进行编译;
  • 3、如果你用的Maven是3.×以上版本,可以增加 -T 1C 参数,表示每个CPU核心跑一个工程;

完整命令如下

mvn clean package -T 1C -Dmaven.test.skip=true  -Dmaven.compile.fork=true

Maven多模块编译中遇到的坑

一、概述

Maven使用过程中,如果使用多model的形式组织项目,单个模块之间是相互独立的;编译整个root目录时会对每个模块都进行统一编译。单单对某个模块进行编译,该模块不会对其他模块进行编译,即便是其引用的模块。

二、坑描述和解决方法

踩坑描述

在对一个通用jar包进行打包时,该模块对其他模块进行了引用,由于引用模块的代码进行了修改,在使用该包的过程成老是出现错误;

解决方法

对root目录进行打包,这样整个项目就会重新编译,修改的依赖代码就可以更新了;

或者是把引用模块重新编译,install一下,然后在编译模块时重新引用一下。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Spring Boot 启动加载数据 CommandLineRunner的使用

    Spring Boot 启动加载数据 CommandLineRunner的使用

    本篇文章主要介绍了Spring Boot 启动加载数据 CommandLineRunner的使用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-04-04
  • Linux下启动jar包的几种常见方式

    Linux下启动jar包的几种常见方式

    最近在linux上发布了一个SpringBoot项目,研究了一下jar包在Linux上的集中启动方式,这篇文章主要给大家介绍了Linux下启动jar包的几种常见方式,需要的朋友可以参考下
    2023-07-07
  • 深入理解Java中的WeakHashMap

    深入理解Java中的WeakHashMap

    这篇文章主要介绍了深入理解Java中的WeakHashMap,WeakHashMap从名字可以得知主要和Map有关,不过还有一个Weak,我们就更能自然而然的想到这里面还牵扯到一种弱引用结构,因此想要彻底搞懂,我们还需要知道四种引用,需要的朋友可以参考下
    2023-09-09
  • Java实现PDF转Word的示例代码(无水印无页数限制)

    Java实现PDF转Word的示例代码(无水印无页数限制)

    这篇文章主要为大家详细介绍了如何利用Java语言实现PDF转Word文件的效果,并可以无水印、无页数限制。文中的示例代码讲解详细,需要的可以参考一下
    2022-05-05
  • SpringBoot logback日志框架使用过程解析

    SpringBoot logback日志框架使用过程解析

    这篇文章主要介绍了SpringBoot logback日志框架使用过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • Spring boot 运用策略模式实现避免多次使用if

    Spring boot 运用策略模式实现避免多次使用if

    这篇文章主要介绍了Spring boot 运用策略模式实现避免多次使用if,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • Spring Security学习之rememberMe自动登录的实现

    Spring Security学习之rememberMe自动登录的实现

    这篇文章主要给大家介绍了关于Spring Security学习之rememberMe自动登录的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-06-06
  • linux重启java服务的脚本

    linux重启java服务的脚本

    这篇文章主要介绍了linux重启java服务的脚本,本文分步骤通过shell脚本给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • Java中的 VO,BO,DO 对象命名问题小结

    Java中的 VO,BO,DO 对象命名问题小结

    本文讲解VO,BO,DO 的作用以及如何使用,分析了如何消除三者之间重复的代码,同样结合现实生活中领导配秘书来类比讲解,对Java  VO  对象命名相关知识感兴趣的朋友一起看看吧
    2024-01-01
  • Spring中@Configuration注解的Full模式和Lite模式详解

    Spring中@Configuration注解的Full模式和Lite模式详解

    这篇文章主要介绍了Spring中@Configuration注解的Full模式和Lite模式详解,准确来说,Full 模式和 Lite 模式其实 Spring 容器在处理 Bean 时的两种不同行为,这两种不同的模式在使用时候的表现完全不同,今天就来和各位小伙伴捋一捋这两种模式,需要的朋友可以参考下
    2023-09-09

最新评论