一直都很想深入阅读下Spring的源码,之前都是通过Maven来关联查看Spring源码的,缺点是没法查看整个Spring的整体架构,也无法对源码做一些注释。因此搜索了下,将Spring源码导入STS/Eclipse是最好的选择。个人推荐使用Spring Tool Suite,因为毕竟是人家Spring官方的东西。
一、操作环境
操作系统:Mac OS X 10.10
IDE: Spring Tool Suite 3.6.2.RELEASE
JDK: java version "1.7.0_65"
二、操作步骤
1. 下载源码包
从Github下载Spring的源码https://github.com/spring-projects/spring-framework,可以下载源码包,或者用Github客户端导出到本地仓库。
2. 进入源码目录
在源码目录中有相应环境与IDE的编译脚本,这里主要是Eclipse内核和Idea内核的IDE,如:
3. 执行导入脚本
Windowns系统执行import-into-eclipse.bat,Mac OS X及Linux执行import-into-eclipse.sh,注意在执行脚本时先安装好STS或者Eclipse,如:
按照脚本提示一步一步完成就可以。
STEP 1: Generate subproject Eclipse metadata,生成子项目的metadata,如:
这一步会下载项目依赖的jar包,需要花费一定的时间。
STEP 2: Import subprojects into Eclipse/STS,将Spring所有的子项目导入STS/Eclipse,如:
注意现将子项目导入STS/Eclipse之后再摁任意键进入下一步。
STEP 3: generate root project Eclipse metadata,生成主项目metadata,如:
STEP 4: Import root project into Eclipse/STS,将主项目导入STS/Eclipse,如:
将主项目导入后再进入下一步。
STEP 5: Enable Git support for all projects,启用Git支持,如
如果只是想阅读Spring源码,这一步跳过就行了。
三、常见问题
执行./import-into-eclipse.sh 时,出现如下错误
Unrecognized VM option ‘MaxMetaspaceSize=1024m’
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
这是因为”MaxMetaspaceSize=1024m” 这个参数配置只出现在jdk 8中,默认情况下是在master分支下,猜测是基于jdk 8开发。
所以有三个选择:
1. 切换到其他分支,如3.2.X
2. 安装jdk8
3. 编辑gradlew.bat,移去VM option MaxMetaspaceSize.