Spring源码 环境搭建
目录
- 说明
- 安装gradle
- 导入Spring源码项目
- 出现问题
- 创建测试项目
一、说明:
今天你看Spring源码了么?
搭建工具主要是gradle和idea。
二、安装gradle:
- 由于spring使用了gradle构建工具,所以接下来先安装gradle。从Gradle官网下载gradle安装包,一般下载最新版本,打开链接https://gradle.org/releases/

如上图,选择最新版本下载即可。将下载的安装包gradle-x.x.x-all.zip解压到当前目录,这里我下载的是5.6.4这个版本(原因后面介绍)

2.配置gradle的环境变量:
- 配置GRADLE_HOME,如下图

- 配置Path,如下图

- 打开cmd命令行工具,输入gradle -v,能查看到gradle的版本信息表示安装已经成功

三、导入Spring源码项目
https:///spring-projects/spring-framework,不建议到github上去下载源码,因为网速实在太慢。
可以到码云Gitee 上的仓库下载Spring的镜像,该镜像每日同步一次,地址是https://gitee.com/mirrors/Spring-Framework,如下图

点击克隆下载按钮的下载ZIP即可下载源码包。解压下载的源码包到合适的位置,作为项目的工作空间

2.导入项目,打开 IDEA并选择Improt Project

然后指向spring源码目录

设置gradle

设置自己的Gradle路径,service directory path是选择合适位置存放gradle的仓库repo,如下图

下面等待Gradle自动构建项目的完成,期间需要等待一段时间

Gradle自动构建项目,可能会出现一些问题,控制台报错
1.Could not get unknown property 'classesDir' for main classes

原因是Gradle 5.x以上 sourceSets.main.output.classesDir改名字了 sourceSets.main.output.classesDirs,所以需要将文件中的classesDir 修改为 classesDirs
可以直接全局搜索修改,需修改的文件有:build.gradle,oxm.gradle,aspects.gradle
cached version of io.spring.gradle:propdeps-plugin:0.0.9.RELEASE available
此类问题是版本兼容问题,这里我的idea 版本是2018.3 ,在使用gradle 6.8 构建spring时报上面的错,我的idea版本与gradle-6.8不兼容导致的。解决方案是
下载不同gradle版本尝试解决,2018.3版本兼容gradle-5.6.4版本,然后记得修改环境变量并重新构建项目即可。
3.项目编译的时候报错,找不到符号: 类 DefaultNamingPolicy ,Objenesis ,InstantiatorStrategy ,ObjectInstantiator ,ObjenesisException
具体如下:

这个是由于为了避免第三方class冲突,spring把最新的cglib和objenesis重新打包jar并没有放在源码里。解决方案是打开cmd命令行工具,
然后切换工作目录到 spring 源码工程的根目录下,执行执行 gradle objenesisRepackJar 和 gradle cglibRepackJar命令,如下图:

4.继续重构项目,出现下面的界面表示项目构建完成

1.File–>New–>Modul–>Gradle–>Java–>Next

2.输入ArtifactId: 你的测试项目名,然后一路下一步,最后点击完成,新的模块就建好了

3.打开测试项目的build.gradle文件添加 依赖 beans 和 context;

















