绪论
Spring在J2EE中具有极高的地位,所以对于Spring源码的阅读,对于Java开发者来说能学习到很多的经验。很多人在搭建Spring源码环境的时候会出现很多的问题,为了让后面的人少走弯路,所以将自己的搭建经验与大家分享。
1.环境准备
下载Eclipse,搭建是Eclipse4.6.4(neon)。
1.1 Eclipse安装Gradle插件
由于Spring是用Gradle构建的,建议下载Gradle的Eclipse
Eclipse Version | Type | Update Site |
---|---|---|
Oxygen (4.7) | snapshot | http://download.eclipse.org/buildship/updates/e47/snapshots/2.x |
Neon (4.6) | release | http://download.eclipse.org/buildship/updates/e46/releases/2.x |
Neon (4.6) | milestone | http://download.eclipse.org/buildship/updates/e46/milestones/2.x |
Neon (4.6) | snapshot | http://download.eclipse.org/buildship/updates/e46/snapshots/2.x |
Mars (4.5) | release | http://download.eclipse.org/buildship/updates/e45/releases/2.x |
Mars (4.5) | milestone | http://download.eclipse.org/buildship/updates/e45/milestones/2.x |
Mars (4.5) | snapshot | http://download.eclipse.org/buildship/updates/e45/snapshots/2.x |
Luna (4.4) | release | http://download.eclipse.org/buildship/updates/e44/releases/2.x |
Luna (4.4) | milestone | http://download.eclipse.org/buildship/updates/e44/milestones/2.x |
Luna (4.4) | snapshot | http://download.eclipse.org/buildship/updates/e44/snapshots/2.x |
Kepler (4.3) | release | http://download.eclipse.org/buildship/updates/e43/releases/2.x |
Kepler (4.3) | milestone | http://download.eclipse.org/buildship/updates/e43/milestones/2.x |
Kepler (4.3) | snapshot | http://download.eclipse.org/buildship/updates/e43/snapshots/2.x |
Juno (4.2) | release | http://download.eclipse.org/buildship/updates/e42/releases/2.x |
Juno (4.2) | milestone | http://download.eclipse.org/buildship/updates/e42/milestones/2.x |
Juno (4.2) | snapshot | http://download.eclipse.org/buildship/updates/e42/snapshots/2.x |
安装完插件后指定一下gradle的本地仓库位置:
也可不指定,不指定的话,会在C:\Users\{user}.gradle目录。user表示你的计算机用户名。
1.2 下载源码
spring的源码在GitHub上可以下载到:
Spring源码地址
复制项目地址:
通过git导入项目:
1.3 导入spring-framework源码
右键–>import
2.搭建过程
导入报错后,很多人可能不知道怎么办。没关系,带大家一步步分析,把错误原因找到,一个个的解决掉。
2.1下载Groovy插件
由于spring是需要groovy的支持,下载groovy插件:
下载地址
根据我的Eclipse的版本,我选择的是4.6的:
2.2 解决错误
解决依赖报错的最快方式是在Gradle Tasks找到ide:
点击eclipse,项目中所有的依赖和配置都会生成到你的ide如果仍有部分代码报错。请参考下面内容。
导入代码后效果如下:
对于这些错误不用慌,一个个的解决。点开一个报错的项目spring-aop随便找到一个报错的类:
很明显,通过错误可们看出,这个错误是由于缺包导致的。通过阅读源码发现spring为了避免第三方class的冲突,把最新的cglib和objenesis给repack了。可以到http://cglib.sourceforge.NET和http://objenesis.org中下载最新的两个包,
但并不符合spring框架本身的结构。
这里提供现我下载的两个现成的包:
spring源码repack的两个包
右键点点击项目–>properties–>找到Java Build Path
把刚刚的两个jar包导入到lib
把对应的包导入到对应的项目。
仍然发现还有四个模块报错:
打开spring-aspects中报错的一个类发现:
在类中引用了AnnotationCacheAspect.aj,但是无法引用到,这明显是缺少了某些插件。*.aj需要jadt插件的支持。
2.3 安装AJDT插件
下载地址
这是对应Eclipse我安装的版本:
复制url
Help–>Install New Software
安装:
插件安装小技巧:由于都是安装的插件都来自国外,过程中可能会报错,报错后点detail把报错的jar的地址复制到浏览器下载,如果访问不了,多试几次,下载完放到eclipse的plugin目录下
安装重启后重新导入一下代码。
我们还发现有一部分代码报错,但是这些包都是jdk中的:
把项目的jre重新导入错误不再发生。
好了,把这个错误解决后,发现还有一个模块仍然报错:
很明显,还是缺包,不过这个仅仅是test中的代码报错。在gradle里面build一下,会把缺失的包下载过来。
等包下载完后,再点一下eclipse。
这个时候发现在Build Path的lib下面多了很多的依赖包。
其实上面缺失的包,同样可以通过这种方式来解决。
所有的错误解决完,很干净。