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

目录
  • Maven多模块编译慢
    • 完整命令如下
  • 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一下,然后在编译模块时重新引用一下。

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

(0)

相关推荐

  • 详解Maven多模块打包遇到的问题解决方法

    项目描述: springboot+springcloud+zookeeper+eureka+maven:为多模块多module的分布式架构: 项目目录结构如下 父工程为server工程,其中有多个子module工程: 1.独立子工程:db.model.quartz.redis.util.basecontroller: 2.独立功能模块:dao.service.controller: 其中dao.service.controller分别依赖db.model.quartz.redis.util.ba

  • idea创建maven项目速度慢的三种解决方案

    困扰 Intellij idea是一款非常强大的编辑器,可以很方便地帮我们创建maven项目,有用过的同学应该都深有体会,但我们经常会遇到一个困扰,那就是用idea创建maven项目时,速度很慢,往往需要好几分钟的时间,有时甚至会卡住,主要原因是创建maven项目时默认是下载求网络上的一个文件archetype-catalog.xml,该文件的大小有5-6M,下载的速度很慢,导致创建过程也变得很慢. 解决办法 解决办法有三种,并且都需要对maven的VM Options参数做配置. 方法一 在m

  • 解决maven第一次创建项目太慢的问题

    Maven是 Apache 下的一个纯 Java 开发的开源项目,是一个项目构建和管理的工具:它提供了帮助管理 构建.文档.报告.依赖.scms.发布.分发的方法.可以方便的编译代码.进行依赖管理.管理二进制库等等. 问题: 第一次用maven创建项目的时候,因为本地仓库中没有jar包,需要从中央仓库下载,所以会比较慢 解决方法: 因为从中央仓库下载默认使用的国外的镜像下载,速度比较慢,我们可以把镜像修改为从阿里云下载,这样比较快 方法,打开maven在本地的位置,找到conf文件夹下的sett

  • SpringBoot+Maven 多模块项目的构建、运行、打包实战

    本篇文章主要介绍了SpringBoot+Maven 多模块项目的构建.运行.打包,分享给大家,具体如下: 项目使用的工具: IntelliJ IDEA JDK 1.8 apache-maven-3.3.9 项目的目录: 主项目 springboot-multi 子模块 entity.dao.service.web 一.使用IDEA创建一个SpringBoot项目 : File -> new -> Project 项目名称为springboot-multi 二.删除项目中的src目录,把pom.

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

    目录 Maven多模块编译慢 完整命令如下 Maven多模块编译中遇到的坑 一.概述 二.坑描述和解决方法 踩坑描述 解决方法 Maven多模块编译慢 最近在部署项目时发现,Maven编译打包相当耗时,比之前项目用Gradle慢了很多倍,特别是对于WEB工程,打war包花的时间很长,在unix主机下一般会用到3到4分钟,如果有多个WEB工程,那简直不能忍受,经过查找资料并结合本人真实验证,原本编译打包需要8分钟的项目,优化编译后时间减少至34秒. 如下图: 其中下面标红两个工程为WEB工程.下面

  • 使用idea解决maven依赖冲突的问题

    前言:我们进行用maven 开发组件的时候,经常会遇到一种情况,我们添加一些maven依赖后,经常会出现本地原本正常的代码编译不过去 下面我们就将这种问题的解决思路和解决方案逐步讲解 记录报错的那几个类 将刚才添加的maven依赖都还原找到刚才报错的类的jar包的版本号 例如我们的文件fastjson-1.2.58 还原刚才加入的maven依赖在刚才编译报错的maven 模块上构建maven依赖体系 结果如下图所示 6.在构建结果中按ctrl+F 7.输入报错的jar包的名字 8.选中一个点进去

  • Maven分模块开发与依赖管理和聚合和继承及属性深入详细介绍

    目录 前言 分模块开发 1.1 分模块开发理念 1.按照功能拆分 2.按照模块拆分 1.2 分模块开发实现 2.依赖管理 2.1 依赖传递与冲突问题 2.2 可选依赖和排除依赖 3.聚合和继承 3.1 聚合 3.2 继承 3.3 聚合VS继承 4.属性 4.1 定义父工程属性 4.2 修改依赖的version 5.配置文件加载属性 5.1 父工程定义属性 5.2 jdbc.properties文件中引用属性 5.3 设置maven过滤文件范围 前言 对于复杂庞大的项目,maven的熟练使用可以大

  • 解决Maven 项目报错 java.httpservlet和synchronized使用方法

    使用java8 的lanmbe表达式时,使用java1.8编译,则会报错 需要在pom.xml的<bulid></build>中添加 <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</versi

  • 解决maven update project 后项目jdk变成1.5的问题

    一.问题描述 在Eclipse中新建了一个Maven工程, 然后更改JDK版本为1.7, 结果每次使用Maven > Update project的时候JDK版本都恢复成1.5. 二.原因分析 Maven官方文档有如下描述: 编译器插件用来编译项目的源文件.从3.0版本开始, 用来编译Java源文件的默认编译器是javax.tools.JavaCompiler (如果你是用的是java 1.6) . 如果你想强制性的让插件使用javac,你必须配置插件选项 forceJavacCompilerU

  • maven多模块工程打包部署的方法步骤

    一般maven多模块工程结构如下图,图中分为dao数据层和上层web层(当然还可以有service层),在进行多模块划分的时候,一般将dao层采用jar进行打包,web层进行war打包.在进行war包部署时,发现dao是以jar包形式存在于lib包目录下,如果在部署服务器上需要进行相关配置修改会比较麻烦.因此研究了下用maven进行合并打包的方法: 1.确保dao pom.xml中有以下配置 <resources> <resource> <directory>${bas

  • 解决SpringBoot多模块发布时99%的问题

    解决SpringBoot多模块发布时99%的问题?SpringBoot发布的8个原则和4个问题的解决方案 如果使用 SpringBoot 多模块发布到外部 Tomcat,可能会遇到各种各样的问题.本文归纳了以下 8 个原则和发布时经常出现的 4 个问题的解决方案,掌握了这些原则和解决方案,几乎可以解决绝大数 SpringBoot 发布问题. SpringBoot 多模块发布的 8 大原则 1 在发布模块打包,而不是父模块上打包 比如,以下项目目录: 如果要发布 api 就直接在它的模块上打包,而

  • IntelliJ IDEA 构建maven多模块工程项目(详细多图)

    食用前须知 本文以a b c 三个模块为例来搭建项目,以达到通俗易懂的初衷 模块a -– 基模块,就是人们常说的parent 模块b -– 其他模块都需要使用的一些工具,比如时间工具,json工具等 模块c -– 项目主要的内容,一般为聚合工程 先简单讲一下maven的一些特点 继承 这个可以理解为java中的继承类似,父类定义的东西,子类如果你想用就拿过来用就可以; 依赖 依赖就相当于我们java中的导包,二者有着异曲同工之妙; 你想用的东西只需要告诉maven它在哪就可以,它会自动帮你找过来

  • Maven分模块开发执行指令失败的问题

    Maven工程分模块开发完成 父工程配置了 tomcat7插件,运行 run命令 执行run指令时失败,报错信息如下: D:\java\JDK8\bin\java.exe "-Dmaven.multiModuleProjectDirectory=D:\Idea2020\IntelliJ IDEA 2020.1\MavenProject_parent" -Dmaven.home=D:\apache-maven-3.6.3 -Dclassworlds.conf=D:\apache-mave

随机推荐