来源:blog.csdn.net/LiuCJ_20000/article/details/138902163
👉 欢迎加入小哈的星球,你将获得: 专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17..., 点击查看项目介绍; 《从零手撸:前后端分离博客项目(全栈开发)》 2期已完结,演示链接:http://116.62.199.48/; 截止目前,累计输出 77w+ 字,讲解图 3088+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,Spring Cloud Alibaba 等等,戳我加入学习,解锁全部项目,已有2600+小伙伴加入
背景 前置要求 IDEA 构建慢的原因 设置步骤 1.开启多线程 2.将IDEA的构建/运行委托给MVAEN 3.添加配置文件 结语
背景
由于项目扩展,项目模块越来越多也越来越大。每次项目启动,构建时间非常长,严重影响做牛马的效率。也在网上找寻提升构建速度的方法,但都不适用,自己研究了下,找到了提升效率的方法,用起来比较舒服,决定来分享分享。
前置要求
本方案适用于使用 IDEA 和 Maven 进行开发的项目,我当前使用的版本是 IDEA 2023.2 和 Maven 3.8.6,但此方法在其他较新版本中也依然适用。
IDEA 构建慢的原因
IDEA 在启动项目时使用的是其内置的 Maven,而这个内置的 Maven 是单线程执行构建任务的。当项目变得庞大且模块繁多时,逐个构建模块的效率自然很低。
此外,IDEA 内置的 Maven 构建配置较为局限,无法根据项目需求进行有效的调优,这也是构建速度慢的原因之一。
设置步骤
1.开启多线程
打开 IDEA 设置:文件 > 设置 > 构建、执行、部署 > 构建工具 > Maven - 找到“线程计数”,设置为多线程模式(可根据个人电脑的配置设置线程数量,我设置的是 10 个线程)。
2.将IDEA的构建/运行委托给MVAEN
IDEA 默认使用其内置的构建工具执行构建,可以将其委托给 Maven,以获得更好的性能:- 打开 IDEA 设置:文件 > 设置 > 构建、执行、部署 > 构建工具 > Maven - 勾选“将 IDE 构建/运行委托给 Maven”
3.添加配置文件
要进一步优化构建,可以通过添加 Maven 扩展和缓存配置来提高构建效率。
步骤
1.在项目根目录下创建 .mvn
文件夹。
2.在.maven
文件夹下添加 extensions.xml
文件,内容如下
<extensions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/EXTENSIONS/1.0.0"
xsi:schemaLocation="http://maven.apache.org/EXTENSIONS/1.0.0 http://maven.apache.org/xsd/core-extensions-1.0.0.xsd">
<extension>
<groupId>org.apache.maven.extensions</groupId>
<artifactId>maven-build-cache-extension</artifactId>
<version>1.1.0</version>
</extension>
</extensions>
3.在.maven
文件夹下添加 maven-build-cache-config.xml
文件,内容如下
<?xml version="1.0" encoding="UTF-8" ?>
<!---
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<cache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/BUILD-CACHE-CONFIG/1.0.0"
xsi:schemaLocation="http://maven.apache.org/BUILD-CACHE-CONFIG/1.0.0 https://maven.apache.org/xsd/build-cache-config-1.0.0.xsd">
<!--
Template Maven build cache configuration
-->
<configuration>
<enabled>true</enabled>
<hashAlgorithm>SHA-256</hashAlgorithm>
<validateXml>true</validateXml>
<remote enabled="false">
<url>http://host:port</url>
</remote>
<local>
<location>.build-cache</location>
<maxBuildsCached>3</maxBuildsCached>
</local>
<projectVersioning adjustMetaInf="true"/>
</configuration>
<input>
<global>
<glob>
{*.java,*.groovy,*.yaml,*.svcd,*.proto,*assembly.xml,assembly*.xml,*logback.xml,*.vm,*.ini,*.jks,*.properties,*.sh,*.bat}
</glob>
<includes>
<include>src/</include>
</includes>
<excludes>
<exclude>pom.xml</exclude>
</excludes>
</global>
<plugins>
<plugin artifactId="codegen">
<effectivePom>
<excludeProperties>
<excludeProperty>111</excludeProperty>
</excludeProperties>
</effectivePom>
<dirScan mode="auto">
<excludes>
<exclude tagName="outputDirectory"/>
<exclude tagName="directory"/>
</excludes>
<tagScanConfigs>
<tagScanConfig tagName="someProperty" glob="*.java" recursive="false"/>
</tagScanConfigs>
</dirScan>
<executions>
<execution>
<execIds>
<execId>1</execId>
<execId>2</execId>
</execIds>
<dirScan mode="auto">
<includes>
<include tagName="protolocation" recursive="false" glob="*.proto"/>
</includes>
</dirScan>
</execution>
</executions>
</plugin>
</plugins>
</input>
<executionControl>
<runAlways>
<plugins>
<plugin artifactId="maven-failsafe-plugin"/>
<plugin artifactId="flatten-maven-plugin"/>
</plugins>
<executions>
<execution artifactId="maven-deploy-plugin">
<execIds>
<execId>my-execution-id</execId>
</execIds>
</execution>
</executions>
<goalsLists>
<goalsList artifactId="maven-install-plugin">
<goals>
<goal>install</goal>
</goals>
</goalsList>
<goalsList artifactId="maven-deploy-plugin">
<goals>
<goal>deploy</goal>
</goals>
</goalsList>
<goalsList artifactId="bb-sdk-codegen">
<goals>
<goal>deploy-local</goal>
</goals>
</goalsList>
</goalsLists>
</runAlways>
<reconcile logAllProperties="true">
<plugins>
<plugin artifactId="maven-compiler-plugin" goal="compile">
<reconciles>
<reconcile propertyName="source"/>
<reconcile propertyName="target"/>
<reconcile propertyName="debug"/>
<reconcile propertyName="debuglevel"/>
</reconciles>
<!-- whitelist of logged properties-->
<logs>
<log propertyName="includes"/>
<log propertyName="excludes"/>
<log propertyName="argLine"/>
</logs>
</plugin>
<plugin artifactId="duplicate-finder-maven-plugin" goal="check">
<reconciles>
<reconcile propertyName="skip" skipValue="true"/>
<reconcile propertyName="quiet" skipValue="true"/>
</reconciles>
</plugin>
<plugin artifactId="maven-enforcer-plugin" goal="enforce">
<reconciles>
<reconcile propertyName="skip" skipValue="true"/>
</reconciles>
<!-- blacklisted from logging properties-->
<nologs>
<nolog propertyName="redundantProperty"/>
<nolog propertyName="redundantProperty2"/>
</nologs>
</plugin>
</plugins>
</reconcile>
</executionControl>
</cache>
结语
如果这个方法对你有帮助,记得点个赞支持一下!
👉 欢迎加入小哈的星球,你将获得: 专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17..., 点击查看项目介绍; 《从零手撸:前后端分离博客项目(全栈开发)》 2期已完结,演示链接:http://116.62.199.48/; 截止目前,累计输出 77w+ 字,讲解图 3088+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,Spring Cloud Alibaba 等等,戳我加入学习,解锁全部项目,已有2600+小伙伴加入
最近面试BAT,整理一份面试资料《Java面试BATJ通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。
获取方式:点“在看”,关注公众号并回复 Java 领取,更多内容陆续奉上。
PS:因公众号平台更改了推送规则,如果不想错过内容,记得读完点一下“在看”,加个“星标”,这样每次新文章推送才会第一时间出现在你的订阅列表里。
点“在看”支持小哈呀,谢谢