前言
如果想要探究 Spring 源码,那么在本地编译一份 Spring 的源码是必不可少的,这利于我们深入理解框架、方便调试和定位问题,也给予我们定制和扩展的能力。但是编译 Spring 源码并非像编译我们自己的项目那么简单,其中可能会遇到不少的问题,笔者如是,于是写下这一篇教程记录下编译安装的过程和问题。
环境准备
JDK:9 以上版本(本文示例版本为 JDK11)
网络:能正常访问 Github
安装 JDK11
因为 Spring 5.3.10 使用到了 jdk9 以后才有的 jdk.jfr 模块,所以我们需要在电脑上安装 9 以上版本的 jdk,这里以 JDK11 为例。
JDK11 下载地址:Java Archive Downloads - Java SE 11
可以下载压缩包的版本:
解压后,在系统环境变量配置下 JAVA_HOME、CLASSPATH 和 PATH,这些大家应该都比较熟悉,就不在这里赘述。
下载源码
官方 github 仓库:https://github.com/spring-projects/spring-framework
git 地址:https://github.com/spring-projects/spring-framework.git
# 克隆官方仓库
git clone https://github.com/spring-projects/spring-framework.git
# 切换目录
cd spring-framework
# 切换版本对应的 tag
git checkout v5.3.10
下载后会得到以下的目录,此时先不要急着导入到 IDEA,需要先修改一些配置和预编译两个模块,以确保能够正常完成编译。
源码文件预处理
下载 Gradle
用文本编辑器打开源码根目录下的 /gradle/wrapper/gradle-wrapper.properties
文件,可以看到如下内容:
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
其中 distributionUrl
是 gradle 的路径,这里默认配置的是一个下载链接,默认会从这个地址下载,我们可以提前下载好,然后修改为自己本地的文件路径,例如:
其中
D:/develop/gradle-7.2/gradle-7.2-bin.zip
就是我本地 gradle 压缩包的路径
distributionUrl=file\:///D:/develop/gradle-7.2/gradle-7.2-bin.zip
更换 Gradle 镜像源
与 maven 类似,gradle 也需要我们配置下国内镜像源,否则下载起来会很慢。
打开根目录下的 build.gradle
,搜索 url
关键词,在如图所示位置添加几行镜像配置:
maven { url "https://maven.aliyun.com/repository/public" }
maven { url "https://maven.aliyun.com/repository/central" }
同理配置下根目录下的 settings.gradle
:
maven { url "https://maven.aliyun.com/repository/gradle-plugin" }