环境准备
源码下载
github地址: https://github.com/spring-projects/spring-framework/tree/5.1.x
下载Spring源码,切换到5.1.X分支.
gradle配置
1.通过源码中的地址,下载匹配版本的gradle
2.配置gradle的环境变量
3.在cmd中使用gradle -v命令,查看是否配置正确
4.修改IDEA中Gradle配置为本地配置
5.修改Spring源码根目录的build.gradle文件,两处都添加阿里云maven仓库目录
repositories {
maven { url 'https://maven.aliyun.com/repository/public/' }
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
maven { url 'https://maven.aliyun.com/repository/apache-snapshots' }
maven { url 'https://maven.aliyun.com/repository/central' }
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/jcenter' }
maven { url 'https://maven.aliyun.com/repository/spring' }
maven { url 'https://maven.aliyun.com/repository/spring-plugin' }
}
6.编译工程,顺序core-oxm-context-beans-aspects-aop, 点击tasks->compileTestJava
7.新建spring-model即可添加个人项目,开始源码阅读
常见问题
1.No such property: immutableValues for class: org.gradle.api.internal.tasks.DefaultTaskDependency
//修改spring-beans.gradle
注释掉这两行代码
//def deps = compileGroovy.taskDependencies.immutableValues + compileGroovy.taskDependencies.mutableValues
//compileGroovy.dependsOn = deps - 'compileJava'
2.Could not find method useJUnitPlatform()
注释:spring-test.gradle中这行代码
// useJUnitPlatform {
// includeEngines 'junit-jupiter'
// excludeTags 'failing-test-case'
// }
3.错误如下
> Task :spring-beans:compileGroovy FAILED
D:\work_space\spring-framework\spring-beans\src\main\java\org\springframework\beans\support\PropertyComparator.java:138: 错误: 不兼容的类型: PropertyComparator<CAP
#1>无法转换为Comparator<? super CAP#1>
source.sort(new PropertyComparator<>(sortDefinition));
点击错误类,会直接跳转到该方法,然后直接返回值List泛型去掉