导入spring源码的坑

spring源码下载:https://github.com/spring-projects/spring-framework

1、版本兼容问题

spring源码是用gradle创建的,可以通过如图所示,需要下载的源码版本所依赖的gradle版本
spring中查看需要的gradle版本
此外,SpringBoot 与 Gradle也存在版本兼容问题,考虑到以后会用gradle构建springboot项目,Gradle要等于或高于 6.8 版本
SpringBoot 与 Gradle
Gradle 与 Idea 也存在兼容问题。可在安装的idea的pulgins文件夹下查看Gradle版本
Gradle 与 Idea

为了避免兼容问题,最好的方式是升级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 文件
修改 maven 下载源

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指令
gradle项目目录结构
GradleWrapper 的执行流程
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文件解读
GradleWrapper
注意:GRALE_USER_HOME 环境变量用于这里的 Gradle Wrapper 下载的特定版本的 gradle 存储目录。如果我们没有配置过 GRALE_USER_HOME 环境变量,默认在当前用户家目录下的.gradle 文件夹中。

3、idea打开源码文件后修改配置,解决build慢

修改gradle user home,每次打开一个新项目都要配置以下,不然默认在当前用户家目录下的.gradle 文件夹中
gradle user home

修改父项目的build.gradle
build.gradle
修改子项目buildSrc中的build.gradle
修改子项目buildSrc中的build.gradle

posted @   必行之码  阅读(36)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示