一. 前言
Spring Boot 3 RELEASE版本于 2022年11月24日 正式发布,相信已经有不少同学开始准备新版本的学习了,不过目前还不建议在实际项目中做升级,毕竟还有很多框架和中间件没出适配版本。此次Spring Boot里程碑的升级也要求了最低JDK 17 和 Spring Framework 6 ,其核心框架的 Spring 也在 2022年11月16日 迎来了从 5.3.x 到 6.0.x 重大版本升级,借着这个机会,写一篇关于 Spring 6 源码编译和如何高效阅读 Spring 源码的教程。
二. 环境声明
Spring源码编译官方文档:https://github.com/spring-projects/spring-framework/wiki/Build-from-Source
根据官方文档描述, Spring 6 需要 JDK 17。
基础环境 版本 本地路径
操作系统 Windows 11 -
Spring源码 6.0.2 D:\SourceCode\spring-framework
Java环境 JDK 17 D:\Java\jdk-17.0.3.1
编译工具 Gradle 7.6 D:\softs\gradle-7.6
开发工具 IDEA 2022.2.3 -
三. JDK 安装
1. 下载JDK17
下载链接: https://download.oracle.com/java/17/latest/jdk-17_windows-x64_bin.exe
下载后静默安装即可,按需修改 JDK 路径(D:\Java\jdk-17.0.3.1)
2. 配置环境变量(可忽略)
配置环境 JDK 环境变量非必须!考虑到大多数人因为老项目JAVA_HOME配置JDK8的情况,下文是通过设置 Gradle 指定 JDK 版本方式。
添加系统变量 JAVA_HOME = D:\Java\jdk-17.0.3.1
添加Path:%JAVA_HOME%\bin
验证:java -version
四. Gradle 安装
1. 下载Gradle
下载地址:https://gradle.org/releases
下载解压到指定目录(D:\softs\gradle-7.6)
2. 配置环境变量
添加系统变量:GRADLE_HOME=D:\softs\gradle-7.6
添加至Path路径(%GRADLE_HOME%\bin)
查看版本 gradle -v
3. 配置镜像仓库
在gradle安装位置(D:\softs\gradle-7.6\init.d) 目录下新建 init.gradle 文件
参考阿里云官方gradle配置指南:https://developer.aliyun.com/mvn/guide ,init.gradle 完整内容如下
allprojects {
repositories {
maven { url 'file:///D:/data/.m2/repository'} // 本地仓库地址,如果没有依次向下寻找
maven { url "https://maven.aliyun.com/repository/public" }
mavenLocal()
mavenCentral()
}
buildscript {
repositories {
maven { url 'https://maven.aliyun.com/repository/public' }
mavenLocal()
mavenCentral()
}
}
}
五. 源码编译
1. 获取Spring源码
不建议zip包方式下载源代码,具体看官方issue:https://github.com/spring-projects/spring-framework/issues/24467
IDEA 选择 File → New → Project from Version Control 输入Spring源码仓库地址:
源 地址 备注
Github https://github.com/spring-projects/spring-framework.git 速度慢
GitCode https://gitcode.net/mirrors/spring-projects/spring-framework.git 国内镜像,速度极快
IDEA源码获取完成之后,因为当前时间最新稳定版tag是v6.0.2版本 ,所以还需要进行分支切换:
git checkout -b v6.0.2
git pull origin v6.0.2
1
2
2. 环境设置
IDEA设置
File → Settings → Build,Execution,Deployment → Build Tools → Gradle
build.gradle
找到 repositories 配置节点,新增阿里云镜像仓库地址
maven { url "https://maven.aliyun.com/repository/public" } // 阿里云镜像仓库
1
settings.gradle
找到 repositories 配置节点,新增阿里云镜像仓库地址
maven { url "https://maven.aliyun.com/repository/public" } // 阿里云镜像仓库
1
gradle.properties
项目内 gradle.properties 配置文件添加java路径
org.gradle.java.home=D:\Java\jdk-17.0.3.1
1
3. 编译步骤
在完成上述的源码导入和相关设置之后,就可以进行源码编译了。
参考IDEA导入说明文档 import-into-idea.md ,仅需三步:
Precompile spring-oxm with ./gradlew :spring-oxm:compileTestJava
Windows 环境 CMD 输入 gradlew :spring-oxm:compileTestJava 先执行 spring-oxm 的预编译
Import into IntelliJ (File -> New -> Project from Existing Sources -> Navigate to directory -> Select build.gradle)
File → New → Project from Existing Sources → Select File or Directory to import 选择 build.gradle 点击 OK 完成编译
When prompted exclude the spring-aspects module (or after the import via File-> Project Structure -> Modules)