Spring源码学习一_下载Spring项目源码并编译为Eclipse
1.下载Spring源码
git下载地址:https://github.com/SpringSource/spring-framework/
2.下载完成后,编译前需满足的先决条件
1)当前系统中安装了gradle,如果为安装,可以从:http://www.gradle.org/downloads,选择一个版本进行下载
2)当前系统安装了OpenJDK 8 early access build 100 or later,点击链接可以下载。安装后还需要确认JAVA_HOME环境变量中指向了刚安装的JDK8
3)鉴于上次编译Hibernate的经验,建议修改区域语言为“英语(英国)”,防止在编译过程中出现字符编码错误。
3.运行编译命令,将代码编译为eclipse项目
1)命令行下切换当当前spring代码的根目录
cd C:\Users\Administrator\Documents\GitHub\spring-framework
2)运行import-into-eclipse.bat,这次不是直接运行gradlew.bat,但打开import-into-eclipse.bat可以看到,其实其内部还是调用了gradlew,如:
72行 set COMMAND=gradlew :eclipse
90行 call %COMMAND%
3)编译时会提示你安装Spring STS,下载地址
http://springsource.org/downloads/sts
选择相应的版本下载,我选择下载的是基于ECLIPSE KEPLER 4.3的32位zip版
下载地址为:
直接回车确认即可
4)接着会提示要运行的命令是:
./gradlew cleanEclipse :spring-oxm:compileTestJava eclipse -x :eclipse
直接回车确认
5)接下来会自动下载所需的依赖包,等待其下载、编译完成即可。
编译的过程中,第一次编译停留在“> Building > :spring-core:cglibRepackJar”这个提示处很久,查看cmd的进程,貌似死了,我将其结束后重新运行,依旧停留在这个地方。
注:在编译过程中,经常出现在下载依赖项时没有响应的情况,需要找到对应的java进程,结束后重新运行,或者直接关闭命令行窗口重新来一次,暂未找到具体原因。
猜测应该和我的网络状况和java环境有关,编译过程中尝试了jdk8的32位和64位版本,都有这个问题。
在编译多次不成功以后,我通过运行gradlew.bat install,尝试先把所有的依赖项都先下载下来,在下载子项目相关的依赖项的过程中,仍然会出现命令没有响应的情况,只能一次又一次地关闭,重新运行。
一次又一次编译假死后,终于看到了“BUILD SUCCESS”,再次运行import-into-eclipse.bat,这次运行,跳过了很多之前需要下载的依赖项,应该是运行install命令的时候已经下载过了,但还是有一些仍然需要下载的依赖项。观察输出,会发现首先会下载依赖项所对应的pom文件,接着才会下载对应的jar。应该是和Maven相关的,有时间要把Maven、ant、ivy、gradle这些都看一下。
-----------------------------------------------分割线---------------------------------------------------
回家后,重新从github上下载源码,编译为eclipse项目,没有出现上述问题,因此,可以认为多次编译中断是网络原因造成的,另外,如果本地没有安装gradle的话,编译时会自动下载,但jdk8还是需要预先安装的。之前我安装的是gradle1.7,而spring默认使用的是greadle1.6,暂时还不能确认是否和gradle的版本有关。