专栏名称: Java基基
一个苦练基本功的 Java 公众号,所以取名 Java 基基
目录
相关文章推荐
火星投资  ·  机器狗概念股梳理 ·  2 天前  
火星投资  ·  机器狗概念股梳理 ·  2 天前  
古北路烧烤哥  ·  赛道级投资机会 ·  4 天前  
51好读  ›  专栏  ›  Java基基

一个技巧,优雅解决 IDEA 构建速度慢的问题

Java基基  · 公众号  · 科技投资 科技自媒体  · 2024-12-26 11:55

主要观点总结

本文介绍了一个社群平台提供的资源,包括一对一交流、面试小册、简历优化、求职解惑等内容,并提供了部分开源项目的资料。同时,文章还介绍了提升IDEA构建速度的方法,包括开启多线程、将IDEA的构建/运行委托给Maven、添加配置文件等步骤。

关键观点总结

关键观点1: 社群平台资源

提供一对一交流、面试小册、简历优化、求职解惑等资源,有助于个人成长和职业发展。

关键观点2: 开源项目介绍

介绍了一些开源项目,包括前端管理后台、微信小程序、后端支持单体和微服务架构等内容,并提供了相关仓库地址和视频教程。

关键观点3: 提升IDEA构建速度的方法

介绍了IDEA构建慢的原因和解决方案,包括开启多线程、将IDEA的构建/运行委托给Maven、添加配置文件等步骤。这些方法适用于使用IDEA和Maven进行开发的项目,可以有效提升构建效率。


正文

👉 这是一个或许对你有用的社群

🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入芋道快速开发平台知识星球。下面是星球提供的部分资料: 

👉这是一个或许对你有用的开源项目

国产 Star 破 10w+ 的开源项目,前端包括管理后台 + 微信小程序,后端支持单体和微服务架构。

功能涵盖 RBAC 权限、SaaS 多租户、数据权限、商城、支付、工作流、大屏报表、微信公众号等等功能:

  • Boot 仓库:https://gitee.com/zhijiantianya/ruoyi-vue-pro
  • Cloud 仓库:https://gitee.com/zhijiantianya/yudao-cloud
  • 视频教程:https://doc.iocoder.cn
【国内首批】支持 JDK 21 + SpringBoot 3.2.2、JDK 8 + Spring Boot 2.7.18 双版本 

来源:blog.csdn.net/LiuCJ_20000
/article/details/138902163


背景

由于项目扩展,项目模块越来越多也越来越大。每次项目启动,构建时间非常长,严重影响做牛马的效率。也在网上找寻提升构建速度的方法,但都不适用,自己研究了下,找到了提升效率的方法,用起来比较舒服,决定来分享分享。

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/ruoyi-vue-pro
  • 视频教程:https://doc.iocoder.cn/video/

前置要求

本方案适用于使用 IDEA 和 Maven 进行开发的项目,我当前使用的版本是 IDEA 2023.2 和 Maven 3.8.6,但此方法在其他较新版本中也依然适用。

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/yudao-cloud
  • 视频教程:https://doc.iocoder.cn/video/

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.extensionsgroupId>  
        <artifactId>maven-build-cache-extensionartifactId>  
        <version>1.1.0version>  
    extension>  
extensions>  

3.在.maven文件夹下添加 maven-build-cache-config.xml 文件,内容如下

  
  
<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">
  
  
      
  
    <configuration>  
        <enabled>trueenabled>  
        <hashAlgorithm>SHA-256hashAlgorithm>  
        <validateXml>truevalidateXml>  
        <remote enabled="false">  
            <url>http://host:porturl>  
        remote>  
        <local>  
            <location>.build-cachelocation>  
            <maxBuildsCached>3maxBuildsCached>  
        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.xmlexclude>  
            excludes>  
        global>  
        <plugins>  
            <plugin artifactId="codegen">  
                <effectivePom>  
                    <excludeProperties>  
                        <excludeProperty>111excludeProperty>  
                    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>1execId>  
                            <execId>2execId>  
                        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-idexecId>  
                    execIds>  
                execution>  
            executions>  
            <goalsLists>  
                <goalsList artifactId="maven-install-plugin">  
                    <goals>  
                        <goal>installgoal>  
                    goals>  
                goalsList>  
                <goalsList artifactId="maven-deploy-plugin">  
                    <goals>  
                        <goal>deploygoal>  
                    goals>  
                goalsList>  
                <goalsList artifactId="bb-sdk-codegen">  
                    <goals>  
                        <goal>deploy-localgoal>  
                    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>  
                      
                    <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>  
                      
                    <nologs>  
                        <nolog propertyName="redundantProperty"/>  
                        <nolog propertyName="redundantProperty2"/>  
                    nologs>  
                plugin>  
            plugins>  
        reconcile>  
    executionControl>  
cache>  

结语

如果这个方法对你有帮助,记得点个赞支持一下!


欢迎加入我的知识星球,全面提升技术能力。

👉 加入方式,长按”或“扫描”下方二维码噢

星球的内容包括:项目实战、面试招聘、源码解析、学习路线。

文章有帮助的话,在看,转发吧。

谢谢支持哟 (*^__^*)