grade构建阅读spring源码环境 Idea2020.3
笔者看了很多博客,从早上搞到晚上,终于成功了😢
第一步:下载spring源码
在这里我推荐到码云上下载,网速比较快,顺便附上网址
https://gitee.com/mirrors/Spring-Framework?_from=gitee_search
第二步:下载对应gradle版本
首先我们要确认我们下载的源码所需要的gradle版本是哪个,我们先解压源码,进入这个目录下的properties这个文件
spring-framework\gradle\wrapper\gradle-wrapper.properties
在这里我们可以看到对应gradle版本是5.6.4,所以接下来我们要去官网下载5这个版本的gradle
附上网址https://gradle.org/releases/
点击下载,解压
第三步:配置gradle环境变量
点击确认后就可以了,然后我们看下我们环境变量添加成功了没有,发现是成功的
第四步:预编译spring
我们在spring源码中可以看到这个md文件,打开
按照它的步骤,我们首先要在当前目录下执行
gradle :spring-oxm:compileTestJava
在这期间会报关于找不到git的错误,这个不用管它
报错了就再跑几遍,看到success就成功了
第五步:导入到IDEA中
选择你的源码文件夹,之后
进去之后点击取消,因为我们已经自己下载了对应版本的Gradle了
之后我们要到设置里设置一下我们的Gradle
第六步:更换Gradle镜像源
中间四个替换成下面三个
maven{url 'http://maven.aliyun.com/nexus/content/groups/public/'}
maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/' }
maven{ url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}
这个也是一样
第七步,编译spring
点击下面右边那个刷新,然后它会下载依赖,要挺久的
等等等…终于好了,发现它右边也能展开了,然后我们就开始测试啦
第八步:测试
新建一个gradle model
然后写一个简单的demo,发现包没有导进来
我们加入下面这行导包
然后点击构建,发现就可以了
然后更改设置
然后我们新建测试类测试,发现报了错
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Kb8eu9aJ-1604623752465)(C:\Users\WXC\Desktop\typora\image-20201027101638597.png)]
这时候我们要去导入一个包,具体看这篇博客
https://blog.csdn.net/gooaaee/article/details/104437902
然后发现又报了错
这个问题具体看这篇博客
https://blog.csdn.net/weixin_43405771/article/details/106313378
然后就可以了
然后我们加个配置类试试看,发现也是没问题的
那如果我们想进行单元测试呢,加上test,让他导入junit4,等到导入完成后我们进行测试,发现报错了
然后发现又报错了,我的天
这时候我们要降低junit版本,然后让它重新导入
如果运行还发现这个错误
跟之前一样的步骤即可,终于可以了,感动😿
到这环境就搭建完成了,磕磕绊绊,开始进攻源码了!😃
追更:AOP设置
第一步:导入依赖
dependencies {
implementation 'junit:junit:4.8'
compile(project(":spring-context"))
compile(project(":spring-instrument"))
compile(project(":spring-aop"))
compile(project(":spring-aspects"))
testCompile group: 'junit', name: 'junit', version: '4.8'
}
等依赖导入完成后运行会发现找不到aspect类这类的错误,原因是spring源码的AOP使用了aspectj,而java不识别aspectj,所以我们要自己下载aspectJ
第二步:下载AspectJ安装
https://www.eclipse.org/aspectj/downloads.php
下载完成后
打开 系统cmd 命令行 切换工作目录到 下载的AspectJ 所在目录
执行 java -jar aspectj-1.9.0.jar
第三步:为spring-aspect 工程添加Facets属性
File -> Project Structure -> Facets -> 点击 + 按钮 -> AspectJ -> 选择 spring-aop_main -> 点击OK -> 右键spring-aop_main的Kotlin 选择删除,具体过程如下
同上面给spring-aop_main添加Facets属性一样 给 spring-aspects_main 也添加Facets属性
第四步:更改编译器
选择 Delegate to Javac ,作用是 只编译AspectJ的Facets
再次编译 Build -> Build Project,再跑起来,发现可以了