一步一步详解:在IDEA、Gradle和jdk11环境下轻松搭建Spring框架源代码阅读工具
Spring框架的重要程度不言而喻!
在尝试阅读Spring源码时,在第一步搭建环境上被劝退很多次(确实比较复杂),而且网上搜了很多博客、文章后发现,不是Spring版本老,就是Gradle或者Idea版本老。于是昨天肝到深夜,参考了很多资料,终于搭建成功了Spring5.3.x版本的源码环境!
在分析Spring框架源码之前,首先要搭建起来Spring的源码环境,由于Spring源码并不是托管于maven的,而是托管于Gradle,因此我们需要先下载版Gradle,此外还额外需要本机电脑配置JDK11环境(必须是11,否则Spring源码环境编译过不去)。下面我们就从安装环境开始:
先统一下环境版本要求:
Spring源码版本5.x
Gradle6.4.x及其以上版本
Jdk11(最好是11,jdk8也可以,但是不敢保证一遍成功)
一、JDK11 安装
下载与安装
Oracle官方下载地址:https://www.oracle.com/java/technologies/javase-jdk11-downloads.html
我的电脑是Win10,所以下载下面这个安装包:
- 如果官网下载速度慢,这里提供一个百度云链接:https://pan.baidu.com/s/1LOUVsO2orCUtKRdjOKqGCA,提取码:qqo5
- 下载完成后执行exe安装包,自己选一个安装路径(我的是默认路径),点击下一步:
- 等待安装完成:
配置环境变量
- 右键 -> 我的电脑 -> 属性:
- 选择 -> 高级系统设置 -> 环境变量:
- 选择新建系统环境变量JAVA_HOME:
变量名:JAVA_HOME
变量值:jdk安装的地址(我使用的是默认地址:C:\Program Files\Java\jdk-11.0.6)
注意:如果本机安装由jdk8 的环境,这里只需要找到JAVA_HOME并将变量值修改为jdk11的安装路径即可~
在系统环境变量CLASSPATH中新增如下内容:
- 变量名: CLASSPATH
- 变量值:
.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
- 注意,一定不要忽略了前面的英文句号
.
啊! - 最后一步,找到系统变量中的Path,加入如下内容:
%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
点击确定,并通过cmd
查看环境变量配置是否生效:java -version
JDK8更换JDK11遇到的问题:
更换JDK版本后,修改环境变量,cmd查看版本时仍为jdk8的解决办法:https://blog.****.net/qq_26369317/article/details/80922425
二、Gradle5.6.3 的安装
下载与安装
下载地址:https://services.gradle.org/distributions/
gradle-x.x-bin.zip是需要下载的安装发布版(使用这个就行!注意:这里建议大家下载Gradle6.4.x的版本,在写这篇文章的时候我采用的是Gradle5.6.3这个版本,后来有些粉丝私信反应Spring5.3.x,用Gradle5.x的版本好像会有一些问题,但是不是每个人都出问题,所以为了顺应新版本的Spring,建议尽量采用6.x版本的Gradle!)
gradle-x.x-src.zip是源码
gradle-x.x-all.zip则是下载全部的文件
下载完毕后,在自己指定的磁盘中新建Gradle文件夹,并将下载的压缩包解压到该文件夹中:
如下图所示:
配置环境变量
下载解压完毕后,去进行环境变量的配置,gradle的配置类似于maven和jdk的配置:
右键 -> 我的电脑 –> 属性 –> 高级系统设置 –> 环境变量 –> 系统变量:
在系统变量中新增一个GRADLE_HOME,其值为解压后的路径(我的是F:\Gradle\gradle-5.6.3-all\gradle-5.6.3)
- 然后,修改系统Path变量,在Path变量添加
%GRADLE_HOME%\bin
点击确定,然后就通过cmd
命令去测试一下是否配置成功:gradle -v
查看到gradle的版本信息,配置成功~
创建Gradle的本地jar包仓库文件夹
- 在我们解压gradle的文件夹下执行
cmd
命令:mkdir .gradle
则,我们创建的.gradle文件夹就是用来存放所下载的jar包仓库主目录!配置Gradle镜像在Gradle安装目录下的 init.d 文件夹下,新建一个 init.gradle 文件:
在该文件里面填写以下配置:
allprojects{ repositories { def REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public/' all { ArtifactRepository repo -> def url = repo.url.toString() if ((repo instanceof MavenArtifactRepository) && (url.startsWith('https://repo1.maven.org/maven2') || url.startsWith('https://jcenter.bintray.com'))) { project.logger.lifecycle 'Repository ${repo.url} replaced by $REPOSITORY_URL .' remove repo } } maven { url REPOSITORY_URL } } }
三、IDEA中配置Gradle,并搭建Spring源码环境
IDEA克隆Spring代码仓库
GitHub托管的Spring项目地址:https://github.com/spring-projects/spring-framework
使用HTTPS的方式克隆:https://github.com.cnpmjs.org/spring-projects/spring-framework.git