导入spring源码的坑
spring源码下载:https://github.com/spring-projects/spring-framework
1、版本兼容问题
spring源码是用gradle创建的,可以通过如图所示,需要下载的源码版本所依赖的gradle版本
此外,SpringBoot 与 Gradle也存在版本兼容问题,考虑到以后会用gradle构建springboot项目,Gradle要等于或高于 6.8 版本
Gradle 与 Idea 也存在兼容问题。可在安装的idea的pulgins文件夹下查看Gradle版本
为了避免兼容问题,最好的方式是升级idea版本。
要求 Jdk 为 1.8 或者 1.8 版本以上
2、了解Gradle
Gradle
一般我们用gradle新建项目是用的本地下载的gradle。使用gradle指令。
官网安装指南:https://gradle.org/install/
1、配置环境变量:
GRADLE_HOME【D:\software\gradle-7.4】方式和maven,JDK一样的方式。
GRADLE_USER_HOME【D:\repository】这里我使用的是和maven一样的仓库路径
GRALE_USER_HOME 相当于配置 Gradle 本地仓库位置和 Gradle Wrapper 缓存目录
2、检测是否安装成功
gradle -v 或者 gradle --version: 通过gradle -v或者 gradle --version检测是否安装成功
3、修改 maven 下载源
在 init.d 文件夹创建 init.gradle 文件
allprojects {
repositories {
mavenLocal()
maven { name "Alibaba" ; url "https://maven.aliyun.com/repository/public" }
maven { name "Bstek" ; url "https://nexus.bsdn.org/content/groups/public/" }
mavenCentral()
}
buildscript {
repositories {
maven { name "Alibaba" ; url 'https://maven.aliyun.com/repository/public' }
maven { name "Bstek" ; url 'https://nexus.bsdn.org/content/groups/public/' }
maven { name "M2" ; url 'https://plugins.gradle.org/m2/' }
}
}
}
ps:
启用 init.gradle 文件的方法有:
1.在命令行指定文件,例如:gradle --init-script yourdir/init.gradle -q taskName。你可以多次输入此命令来指定多个init文件
2.把init.gradle文件放到 USER_HOME/.gradle/ 目录下
3.把以.gradle结尾的文件放到 USER_HOME/.gradle/init.d/ 目录下
4.把以.gradle结尾的文件放到 GRADLE_HOME/init.d/ 目录下
如果存在上面的4种方式的2种以上,gradle会按上面的1-4序号依次执行这些文件,如果给定目录下存在多个init脚本,会按拼音a-z顺序执行这些脚本,每个init脚本都存在一个对应的gradle实例,你在这个文件中调用的所有方法和属性,都会委托给这个gradle实例,每个init脚本都实现了Script接口。
仓库地址说明
mavenLocal(): 指定使用maven本地仓库,而本地仓库在配置maven时settings文件指定的仓库位置。
gradle 查找jar包顺序如下:USER_HOME/.m2/settings.xml >> M2_HOME/conf/settings.xml >> USER_HOME/.m2/repository
gradle如果本地maven仓库有这个依赖,就会从直接加载本地依赖,如果本地仓库没有该
依赖,那么还是会从远程下载。但是下载的jar不是存储在本地maven仓库中,而是放在自己的缓存目录中,默认在USER_HOME/.gradle/caches目录,当然如果我们配置过GRADLE_USER_HOME环境变量,则会放在GRADLE_USER_HOME/caches目录,那么可不可以将gradle caches指向maven repository。刚刚我们设置的GRADLE_USER_HOME变量是【D:\repository】,那么gradle的缓存会放在【D:\repository\caches】中
阿里云仓库地址请参考:https://developer.aliyun.com/mvn/guide
Gradle Wrapper
还有一种方式,在我们拉取别人的项目时,为了避免gradle版本的冲突,通常使用Gradle Wrapper。项目中的gradlew、gradlew.cmd脚本用的就是wrapper中规定的gradle版本。使用gradlew或gradlew.bat指令
GradleWrapper 的执行流程
1.当我们第一次执行 ./gradlew build 命令的时候,gradlew 会读取 gradle-wrapper.properties 文件的配置信息
2.准确的将指定版本的 gradle 下载并解压到指定的位置(GRADLE_USER_HOME目录下的wrapper/dists目录中)
3.并构建本地缓存(GRADLE_USER_HOME目录下的caches目录中),下载再使用相同版本的gradle就不用下载了
4.之后执行的 ./gradlew 所有命令都是使用指定的 gradle 版本
gradle-wrapper.properties文件解读
注意:GRALE_USER_HOME 环境变量用于这里的 Gradle Wrapper 下载的特定版本的 gradle 存储目录。如果我们没有配置过 GRALE_USER_HOME 环境变量,默认在当前用户家目录下的.gradle 文件夹中。
3、idea打开源码文件后修改配置,解决build慢
修改gradle user home,每次打开一个新项目都要配置以下,不然默认在当前用户家目录下的.gradle 文件夹中
修改父项目的build.gradle
修改子项目buildSrc中的build.gradle
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix