【Spring源码分析】1、IDEA导入spring-framework-5.2.8.RELEASE源码构建本地阅读环境


在这里插入图片描述

1、构建初始化工作

相关软件版本必须一致,否则会产生各种不必要的错误等

  • JDK 1.8
  • Gradle-5.6.4(可以查看gradle/wrapper/gradle-wrapper.properties文件中配置的版本,官方提供的是radle-5.6.4)
  • IntelliJ IDEA 2019.1 x64 以上(其他版本没试过)

2、构建spring源码到本地

(1)拉取项目源码

将源码拉取或下载到本地
在这里插入图片描述

(2)使用本地gradle

目的是为了不需要再次下载gradle,我这里把gradle-5.6.4-bin.zip的安装包放在了gradle的安装目录下
在这里插入图片描述
在这里插入图片描述

(3)执行gradle.bat

项目根目录输入cmd,执行gradle.bat命令
在这里插入图片描述

(3)idea导入项目

导入项目,使用本地gradle
在这里插入图片描述
导入之后,刷新gradle,应该要很长时间,一定要网很好的地方刷新,不然总是报错,多刷新几次
在这里插入图片描述

(4)预编译spring-oxm

这一步是官方给出的导入步骤,使用./gradlew :spring-oxm:compileTestJava预编译spring-oxm

(5)修改dosc.gradle

在编译之前还需要对spring-framework-5.2.8.RELEASE/gradle/dosc.gradle文档进行修改,因为有些注释,文件路径在编译时需要调整
在这里插入图片描述

(6)添加AspectJ编译

问题原因是spring源码的AOP使用了aspectJ ,而java不识别aspectJ
用迅雷下载(因为快)AspectJ:https://www.eclipse.org/aspectj/downloads.php
在这里插入图片描述
在这里插入图片描述

java -jar aspectj-1.9.6.jar 运行下载的jar进行安装
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
ctrl + alt + shift + s
在这里插入图片描述
添加两个

  • AspectJ(spring.spring-aop.main)
  • AspectJ(spring.spring-aspects.main)
    在这里插入图片描述
    添加之后的效果
    在这里插入图片描述

修改AspectJ编译的方式
在这里插入图片描述

(7)修改spring-core缺失jar

spring-core缺少spring-cglib-repack-3.3.0.jar,spring-objenesis-repack-3.1.jar
在这里插入图片描述
找到 Gradle>spring-core>Tasks>other下面的两个工具,双击运行在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
把原来报错的两个jar删除,保留新导入的本地jar即可,效果图如下
在这里插入图片描述

(8)解决SingletonTargetSource找不到

首先,打开类spring-aop\src\main\java\org\springframework\aop\framework\AopProxyUtils.java发现报错,
报错找不到import org.springframework.aop.target.SingletonTargetSource;,网上没人解决这个问题,我是和同时讨论之间找到解决方法的。

在Windows下查看该目录spring-aop\src\main\java\org\springframework\aop\target是存在的,但是在idea中显示不出来

解决方法:File–>Settings–>Editor–>File Types–>右边Ignore files and folders找到target文件名去掉即可
在这里插入图片描述
这时,target目录出来了,但是变成了灰色,修改项目根目录下的.gitignore注释掉target/,文件则可正常使用
在这里插入图片描述

(9)构建spring源码

看侧边栏就知道,这个过程比较漫长,我时间短是因为clean之后构建过好几次
在这里插入图片描述
如果报错
在这里插入图片描述
随便找一个maven项目,把下面的坐标放进去,刷新maven,让本地仓库有这个jar包即可

<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjtools</artifactId>
    <version>1.9.5</version>
</dependency>

3、创建测试模块

项目名邮件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
添加spring核心依赖,compile(project(":spring-context"))
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如有报错,则根据以下报错汇总解决即可

4、报错问题汇总

(1)报错:找不到CoroutinesUtils

在这里插入图片描述
找到spring-core\kotlin-coroutines\build\libs\kotlin-coroutines-5.2.8.RELEASE.jar,右键 Add As Library,然后点开IDEA上方工具栏,Build - Rebuild Project,没有效果则关闭项目重新打开再点击Rebuild Project,简单粗暴
在这里插入图片描述

(2)报错:缺少spring-cglib-repack-3.3.0.jar,spring-objenesis-repack-3.1.jar

spring-core缺少spring-cglib-repack-3.3.0.jar,spring-objenesis-repack-3.1.jar
在这里插入图片描述
找到 Gradle>spring-core>Tasks>other下面的两个工具,双击运行在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
把原来报错的两个jar删除,保留新导入的本地jar即可,效果图如下
在这里插入图片描述

(3)报错:Error:(354, 51) java: 找不到符号 符号: 变量 CoroutinesUtils

在这里插入图片描述
找到spring-core\kotlin-coroutines\build\libs\kotlin-coroutines-5.2.8.RELEASE.jar,右键 Add As Library,然后点开IDEA上方工具栏,Build - Rebuild Project,没有效果则关闭项目重新打开再点击Rebuild Project,简单粗暴
在这里插入图片描述
或者执行以下操作,实际上是一样的效果, 就是将jar添加到模块中
在这里插入图片描述
在这里插入图片描述

(4)报错:Aspectj Error:(38, 38) java: 程序包org.springframework.aop.target不存在

问题原因是spring源码的AOP使用了aspectJ ,而java不识别aspectJ
用迅雷下载(因为快)AspectJ:https://www.eclipse.org/aspectj/downloads.php
在这里插入图片描述
在这里插入图片描述

java -jar aspectj-1.9.6.jar 运行下载的jar进行安装
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
ctrl + alt + shift + s
在这里插入图片描述
添加两个

  • AspectJ(spring.spring-aop.main)
  • AspectJ(spring.spring-aspects.main)
    在这里插入图片描述
    添加之后的效果
    在这里插入图片描述

修改AspectJ编译的方式
在这里插入图片描述

(5)报错:找不到 import org.springframework.aop.target.SingletonTargetSource;

在这里插入图片描述
首先,打开类spring-aop\src\main\java\org\springframework\aop\framework\AopProxyUtils.java发现报错,
报错找不到import org.springframework.aop.target.SingletonTargetSource;,网上没人解决这个问题,我是和同时讨论之间找到解决方法的。

在Windows下查看该目录spring-aop\src\main\java\org\springframework\aop\target是存在的,但是在idea中显示不出来

解决方法:File–>Settings–>Editor–>File Types–>右边Ignore files and folders找到target文件名去掉即可
在这里插入图片描述
这时,target目录出来了,但是变成了灰色,修改项目根目录下的.gitignore注释掉target/,文件则可正常使用
在这里插入图片描述

5、其他相关项目整理

(1)强迫症修改项目名与配置名相同

我们这里可以看到,后面的名字和项目名字不同,这里统一处理以下,将右侧的rootProject.name修改为以下值

rootProject.name = "spring-framework-5.2.8.RELEASE"

在这里插入图片描述
刷新完成之后,强迫症消失了
在这里插入图片描述

(2)上传项目到github/码云

先使用github/码云创建仓库地址,然后拿到仓库地址,例如:

https://github.com/Tellsea/spring-framework-5.2.8.RELEASE.git

把项目构建成git仓库
在这里插入图片描述
在这里插入图片描述
现在所有文件为红色,然后通过右键项目名,git,add,把所有文件变成绿色
在这里插入图片描述
然后提交文件到缓存区,过程可能慢一点,因为文件数量有点大
在这里插入图片描述
在这里插入图片描述
提交到缓存区之后,本地文件变成白色,但是线上的代码仓库还没有代码,我们还需要将缓存区提交到线上
在这里插入图片描述
填写第一步创建的线上仓库地址,然后点击提交即可

技术分享区

在这里插入图片描述

  • 13
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tellsea

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值