Spring源码的学习对于开发者来说挺重要的,学习源码的过程中,最基本的当然还是环境搭建,要不谈源码学习就是瞎扯,本次搭建搭建spring-framework-5.0.x环境踩得坑挺多,记录下来以供各位参考,
一、gradle搭建
这个玩意儿以前确实没用过,此处省略一大堆这个玩意儿是干什么的,之前用的都是maven,但是Spring源码用的就是这个,所以老老实实的搭建吧,我用的是gradle-4.4.1,为啥用这个版本?我也不知道,因为看Spring源码中用的是这个版本,所以我就用这个版本了,
去访问官网:Gradle | Releases
进去以后就是长这样的,看看你进去对了吗?
往下扒拉扒拉,找下我刚刚说的那个版本,
点这个complete,然后等待下载好,
下载好是这个名字哈,不要纠结为啥跟spring源码中指定的那个版本不一致,这个用就对了,找一个地方给它解压了, 配置下环境变量
GRADLE_HOME D:\Java\Gradle\gradle-4.4.1这个是我的位置,具体到各位就自己复制自己的路径,
PATH里面也加一下哈
%GRADLE_HOME%\bin
环境变量配置好以后去我们解压的这个文件夹创建下一个文件
文件名为 init.gradle
文件内容是下面
Gradle_repository是我们设置的gradle仓库,其他的直接复制就对了,记得创建一个自己的gradle仓库,类似于maven的仓库
allprojects {
repositories {
maven { url 'file:///D:/Java/Gradle/Gradle_repository'}
mavenLocal()
maven { name "Alibaba" ; url "https://maven.aliyun.com/repository/public" }
maven { name "Bstek" ; url "https://nexus.bsdn.org/content/groups/public/" }
mavenCentral()
}
buildscript {
repositories {
maven { name "Alibaba" ; url 'https://maven.aliyun.com/repository/public' }
maven { name "Bstek" ; url 'https://nexus.bsdn.org/content/groups/public/' }
maven { name "M2" ; url 'https://plugins.gradle.org/m2/' }
}
}
}
查看gradle是否安装成功,win+r cmd 打开这个cmd窗口,执行gradle -v ,有返回就是没有问题的。
打开我们的idea,打开setting找到gradle配置
模仿上图,给设置好,具体为什么设置成这样也不解释了,基本设置的值都是gradle解压的位置
关于gradle的配置,暂且先到这里了。
二、下载源码
源码的下载没有啥差别,本次我看的是Spring
访问Spring官网,下载源码Spring Framework
然后下载,这个下载自己看哪个方便,我是直接下载压缩包的,可能有的是通过链接下载的,
下载好了自己去找一个地方给解压了
三、编译Spring源码
通过idea打开我们的Spring 源码,这会儿可能遇到的问题比较多,要是暴躁了建议ctrl+a,delete
先找到Spring源码的build.gradle文件添加阿里云的仓库,
maven { url 'https://maven.aliyun.com/repository/public' }
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
maven { url 'https://maven.aliyun.com/repository/spring' }
maven { url 'https://maven.aliyun.com/repository/spring-plugin' }
添加好了,然后点击下这个小圈圈
等着idea帮我们构建,注意构建成功的话会有左边的蓝色小方块
然后开始点击Build->build project
注意,我的Spring源码部分模块在build过程中会出现一个关于Kotlin报错:
这个只针对于Kotlin还会报错的读者,一直会报版本不一致的问题我目前是用这个解决的。如果没有kotlin版本问题的话,忽略下面几张图片。
Kotlin: Language version 1.1 is no longer supported; please, use version 1.3 or greater.
这个地方我看了网上,有各种各样的解释,我这边的处理方式为
打开idea的Setting选项,搜索 Kotlin Compiler,然后设置成要求的版本
(补充:在后续测试Spring过程中,可能还会报错,根据网上的结果结合我本人的尝试,目前放上我的处理办法)
配置文件的这个地方的kotlin 版本改一下,然后
就接着上面的设置这个kotlin版本的编译:
每一个都展开,设置成use project settings
注意,这个只针对于还会报错的读者,一直会报版本不一致的问题我目前是用这个解决的。如果没有kotlin版本问题的话,忽略上面的步骤。
要是没报这个错误更好,环境搭建过程中各种奇怪的问题总是会让人烦躁,建议ctrl+a,delete,
然后build过程中会有找不到符号的错误,这个问题出现的原因网上太多了,本篇文章是不解释原因的,只讲解决方法哈
Error:(30, 41) java: 找不到符号
符号: 类 DefaultNamingPolicy
Error:(34, 9) java: 方法不会覆盖或实现超类型的方法
Error:(20, 50) java: 程序包org.springframework.objenesis.instantiator不存在
Error:(21, 46) java: 程序包org.springframework.objenesis.strategy不存在
Error:(22, 46) java: 程序包org.springframework.objenesis.strategy不存在
打开此电脑,打开这个Spring源码项目所在的目录,然后执行cmd命令
gradle objenesisRepackJar
执行好了后执行
gradle cglibRepackJar
中间有可能构建失败了,没事,多来几次就成功了
错误截图,不知道是不是因为空格的原因?或者其他的,我这边是多试了几次就好了
接着build->build project
一般会出先第二个问题
org.springframework.oxm.jaxb.test不存在
这样一般这个问题是解决了
然后最终版,开始集成 aspectj
点击build->build project 然后会报错
Error:(43, 53) java: 找不到符号
符号: 变量 AnnotationCacheAspect
位置: 类 org.springframework.cache.aspectj.AspectJCachingConfiguration
Error:(44, 16) java: 找不到符号
符号: 类 AnnotationAsyncExecutionAspect
位置: 类 org.springframework.scheduling.aspectj.AspectJAsyncConfiguration
Error:(45, 17) java: 找不到符号
符号: 类 AnnotationAsyncExecutionAspect
位置: 类 org.springframework.scheduling.aspectj.AspectJAsyncConfiguration
Error:(45, 62) java: 找不到符号
符号: 变量 AnnotationAsyncExecutionAspect
位置: 类 org.springframework.scheduling.aspectj.AspectJAsyncConfiguration
这个是因为没有集成 aspectj,去官网上下载个这个
AspectJ Downloads | The Eclipse Foundation
找个文件夹把它放进去,然后进那个文件夹的cmd
执行java -jar aspectj-1.9.5.jar
然后就会弹出来个安装窗口,一直next就好了
安装好后打开我们的idea,这个地方可能会有一个坑,
可能有的小伙伴的Facets中没有这个AspectJ选项,这个地方挺坑的,需要去idea的插件市场去下载AspectJ插件,然后安装才会有这个选项,这个问题我看网上几乎都没有答复,但是如果idea是刚安装的可能就会有这个问题
言归正传,选则这个
选中 spring.spring-aop.main,添加这个Aspectj,最后的效果图如下
接下来配置AspectJ编译
打开settting
好了,基本的环境总算是搭建好了,接下来点击下build->build project,一般情况下是不会再有报错了,可以愉快的学习源码了