前言
该文章不包括Gradle的安装,并且在源码构建过程中需要翻404,否则容易失败。
下载源码
如果下载源码时卡住或失败,需要翻过404,或者参考该文章(推荐):https://www.jianshu.com/p/c72473ad98ed
git clone git@github.com:spring-projects/spring-framework.git
<!--切换tag-->
cd spring-framework
git checkout v5.2.2.RELEASE
<!--从当前tag开出一个分支-->
<!--git switch -c <new-batch-name>-->
git switch -c learn/v5.2.2
项目导入
注意:项目导入步骤需要翻404,不然大概率失败
根据spring-framework目录下的 import-into-idea.md
说明进行如下操作:
1. 预编译spring-oxm
gradlew :spring-oxm:compileTestJava
import-into-idea.md
中的说明是使用 ./gradlew :spring-oxm:compileTestJava
,但是发现加上 ./
会报错。
出现如下图片说明执行成功:
2. 导入IDEA
在IDEA中点击File -> New -> Project from Existing Sources 并选择 spring-framework
目录下的 build.gradle
。
导入后该项目没有设置SDK,需要如下操作:
3. 创建一个自己的maven模块
导入成功后右下角会提示 Maven projects need to be imported
任选一个即可。
然后在该模块的pom.xml中添加如下依赖(后续需要使用):
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
每次变更pom.xml都需要在IDEA的 Project Structure
中重新配置依赖(目前没找到更好的解决方法,只能在配置好如下依赖后就不动pom.xml或在配置后重新给该模块添加依赖)
4. 为该Maven项目配置依赖
同样的,点击File -> Project Structure
5. 运行自己的代码
万事大吉了?怎么可能,又会出现很多报错
6. 解决问题
问题一:
Error:(347, 51) java: 找不到符号
符号: 变量 CoroutinesUtils
位置: 类 org.springframework.core.ReactiveAdapterRegistry.CoroutinesRegistrar
问题一解决方法:
上面的Gif没把点击的按钮截取进去在这说明下,点击的按钮是
然后再次运行代码
7.依赖问题解决方法总结
这一次构建Spring源码不知道为什么很顺利,就只遇到这一个依赖问题,在这说明下依赖问题的解决方法:
与上面的解决方法类似,如果遇到A模块报.kt文件找不到,例如 BeanDefinitionDsl.kt
则可以找到 BeanDefinitionDsl.kt
文件所在模块B,打开B模块build -> libs 目录下的 .jar 文件右键点击 Add As Library 并在弹出的窗口中的 Add to module 中选择A.main模块即可。