使用环境
- IntelliJ Idea2020.2
- gradle5.6.4
- spring-framework5.2.x
第一步,下载Spring源码
下载地址:https://github.com/spring-projects/spring-framework 可以选择自己要下载的版本。
下载方式:
1. 下载zip
2.git clone命令下载指定分支代码
创建代码要放置的文件夹,然后在该目录下执行git clone -b命令下载代码
git clone -b 5.2.x https://github.com/spring-projects/spring-framework.git
NOTICE:git clone时,如果遇到下边的错误,有可能是因为网络网速太慢导致的。建议换个网络环境/font>
第二步,下载安装gradle
1. 下载gradle
因为Spring源码是用Gradle进行自动化构建的。所以先要下载并安装好Gradle。
下载地址:https://gradle.org/releases/
NOTICE:你下载的Gradle版本需要和你下载的Spring源码中的所需要的版本一致。
你可以查看源码gradle/wraaper/gradle-wrapper.properties文件中的Gradle的版本。
选择对应的gradle版本进行下载。
下载完成后,参照下边的步骤进行配置
2. 安装以及配置gradle
直接解压安装即可。这里推荐参照gradle用户手册进行安装,以免遇到gradle命令无法执行的问题。
下载完成后,按照下边命令进行解压
❯ mkdir /opt/gradle
❯ unzip -d /opt/gradle gradle-5.6.4-bin.zip
❯ ls /opt/gradle/gradle-5.6.4
LICENSE NOTICE bin getting-started.html init.d lib media
解压完成后,再按照下边命令进行配置
❯ ❯ export PATH=$PATH:/opt/gradle/gradle-4.10.3/bin
配置完成后,使用source ~/.bash_profile
命令使配置生效。
至此gradle已经配置完成,可以使用gradle -v
命令进行验证。如果出现下边的信息,则证明配置成功。
------------------------------------------------------------
Gradle 5.6.4
------------------------------------------------------------
Build time: 2019-11-01 20:42:00 UTC
Revision: dd870424f9bd8e195d614dc14bb140f43c22da98
Kotlin: 1.3.41
Groovy: 2.5.4
Ant: Apache Ant(TM) version 1.9.14 compiled on March 12 2019
JVM: 1.8.0_241 (Oracle Corporation 25.241-b07)
OS: Mac OS X 10.16 x86_64
第三步,按照Spring源码上import-into-idea.md说明导入到IntellijIdea
import-into-idea.md放置在源码工程中
import-into-idea.md说明
1. 先用Gradle编译Spring源码中的spring—oxm模块
先找到spring-oxm所在目录然后运行./gradlew :spring-oxm:compileTestJava
2. 然后导入spring源码到IntelliJIdea(File -> New -> Project from Existing Sources -> Navigate to directory -> Select build.gradle),初次导入需要加载jar包,等待时间较长
3.创建一个工程验证源码是否可用
parent处选择Spring,表示新创建的Model是Spring的子Model,在右侧gradle运行界面不会出现单独的目录。
在新创建的Model中,修改build.gradle。
之后,创建test用例进行测试,如下图所示,证明Spring源码导入成功
Spring源码导入后,运行测试例子时遇到的错误:
1.> No tests found for given includes: [**/*Tests.class, **/*Test.class](include rules) [IocTest.test1(filter.includeTestsMatching)
这个错误是因为idea中,gradle配置中,运行测试实例没有配置成idea导致的。具体配置修改如下:
2.>java.lang.NoClassDefFoundError:org/hamcrest/SelfDescribing
这个错误是因为Junit从4.1.11开始不提供这个jar包了,需要降到4.1.10这个版本。具体修改build.gradle里的Junit版本就可以