Spring源码编译
源码包下载
基于Spring v5.2.0RELEASE, 访问下述地址就能下载到源码包, 解压后(解压路径最好别包含空格和中文), 查看gradle目录下的相关信息, 能查到Spring5.2.0
版本是用gradle 5.6.2
进行打包的。
1 |
|
gradle安装
实际上更为方法的做法是使用gradlew(gradle wrapper)
命令, 这样可以不用自己本地安装gradle, 而可以根据项目的wrapper.properties配置文件指定gradle.zip来自行下载这个项目需要的对应版本的gradle, 相关依赖会被保存在c盘/用户/.gradle
下。而我这里的做法是配置一个本地gradle并在idea中自定义gradle配置。
访问以下地址进行下载
1 |
|
解压并配置环境变量
配置镜像源(本地仓库没有依赖时的重要配置): 在gradle-5.6.2/init.d/
目录下, 创建init.gradle
, 并添加以下内容
1 |
|
Spring源码的gradle配置
首先替换源码根路径下的build.gradle文件
中respositories为阿里的, 需要配置以下2个
地方。
1 |
|
1 |
|
导入idea
参考: https://github.com/spring-projects/spring-framework/blob/main/import-into-idea.md
预编译!!!
1 |
|
预编译完成后, 直接open Spring源码文件夹即可, 然后在右下角把正在加载的过程给cancel, 然后去Settings中配置gradle。
然后重新点击Reload All Gradle Project
即可开始下载依赖到idea配置的gradle user home
文件夹下
重新加载完成后, 右侧Gradle栏目
就会显示Spring源码的各个模块了, idea也开始Updating Indices.
最后进行项目build
测试
我们可以在spring-core等模块的同级, 创建一个my-spring-test的模块(注意是gradle项目), 并引入spring-core进行测试.
引入内部模块依赖
1 |
|
进行测试(过程中如果乱码, 可以加上启动参数-Dfile.encoding=utf-8
)
Spring源码安装到maven本地仓库
将本地安装的maven的settings.xml复制到c盘/用户/.m2
文件夹下, 里面配置有maven本地仓库的位置, 不然gradle项目publish的jar会放到maven仓库默认路径下面。
然后在publishToMavenLocal之前把之前加的-Dfile.encoding=utf-8
参数去掉, 不然会报如下错(在源码上加注释再publish, 也会导致报别的一些错…, 这个没解决得了)
1 |
|
直接spring > Tasks -> publishing > publishToMavenLocal会报一个> Task :asciidoctor FAILED
的错, 但是spring的子模块都能通过publishToMavenLocal直接安装到maven的本地仓库.
Spring添加注释并支持调试
我们可以直接把maven本地仓库的spring-context-5.2.0.RELEASE-sources.jar
解压, 然后按照如下方式在idea中配置。
我们对于一个引入了spring-context模块的maven项目进行如下操作进行替换源码包
下面进行调试测试
另外可以选择将写好注释的文件直接把spring-context-5.2.0.RELEASE-sources.jar
中的文件给替换掉的方式, 这样就不用每个项目都配置一遍源码包了。
实际上其他jdk源码等都能通过这种方式进行添加注释, 这种方式替换源码也是最方便的。