环境准备
spring源码:spring-framework-3.2.18.RELEASE(githhub地址)
jdk版本: jdk7(spring4需要使用jdk8)
gradle: 3.1
(编译spring时会自动下载gradle,不会使用自己安装的gradle。
该spring版本源码对应的build.gradle文件中定义了编译时使用的gradle的版本,使用ctrl+f搜索一下gradleversion就看到了)
一、导入eclipse
开始
1.安装gradle,并配置环境变量
参考gradle的使用
2.配置仓库
buildscript {
repositories {
//Maven本地资源库
mavenLocal()
//阿里云仓库
maven { url "http://maven.aliyun.com/nexus/content/groups/public/" }
//spring仓库
maven { url "https://repo.spring.io/plugins-release" }
//Maven中央资源库
mavenCentral()
}
dependencies {
classpath("org.springframework.build.gradle:propdeps-plugin:0.0.7")
classpath("io.spring.gradle:docbook-reference-plugin:0.3.1")
}
}
3.编译(可选)
我们只是要生成eclipse需要的工程构建文件,编不编译无所谓。这里我直接省略
4.生成eclipse构建文件,并导入
自带的import-into-eclipse.bat这个批处理程序有问题,所以还是使用原生的命令来导入。使用如下的命令
gradle eclipse -x :eclipse
需要这么长时间是因为会下载许多的依赖包。我用流量监控软件监控下载速度一直为2K/S,因此花这么长时间也可以理解。在这之前我使用自带的批处理文件来跑时,发现根本就没有下载流量消耗。
成功后,随便进入一个子工程,就会看到生成了.project,classpath和.settting,这正是eclipse所需要的。然后就可以导入了
5.导入后报错及解决
①少了spring-cglib-repack-3.1.jar
解决方法:
从网上去找一个下载。或者自己从源码中提取打包成jar,可参考网上博客
②提示rt.jar中的类受限
解决方法:
Project -> Properties -> libraries,
先 remove 掉 JRE System Library,然后再 Add Library 重新加入。
③spring-oxm中单元测试报错
直接把所有文件打个zip包了事
二、导入Idea
这部分内容是后来加的,使用的spring源码版本4.3.21。
前3步都和eclipse一样,从第4步开始。
源码中提供了import-into-idea.md文件,照着操作来即可。
步骤如下:
1.预编译spring-oxm模块
在源码根目录下执行
./gradlew cleanIdea :spring-oxm:compileTestJava
这时命令提示符会显示正在下载一个gradle-2.14.1-bin.zip文件,下载非常慢。我们可以使用Evething工具搜索一下这个名称,确定所在目录后,手动从gradle官网下载该gradle版本放到该目录即可。下载网址是:https://services.gradle.org/distributions/。
然后再次执行上面的命令,这时就开始下载spring需要的依赖包了。
2.导入进idea(File->import project->import from external model->Gradle)
3.为spring源码设置jdk版本(1.8+)
4.排除spring-aspects模块(File->Project Structure->Modules)