vlambda博客
学习文章列表

记一次spring5源码的完整编译过程


学习java已有3年之久,spring一直停留在应用阶段,两次面试阿里的经历让我深感学习spring源码的重要性,废话不多说,开搞!


1、环境:


jdk1.8+spring5+gradle4.7+eclipse4.6


如果要参考该教程,环境最好一样(eclipse除外),因为以前编译过spring3,由于环境问题折腾了好久。


2、检测jdk版本java -version


记一次spring5源码的完整编译过程


由于此次编译的是spring5,jdk版本不能太低


2、下载spring源码


spring源码托管在github上:https://github.com/spring-projects/spring-framework(还没安装git的同学是时候学习一下了,不过此次编译可以不依赖git)


记一次spring5源码的完整编译过程


下载下来解压:


记一次spring5源码的完整编译过程


3、安装gradle(一款基于Groovy的构建工具,比maven更简洁)


传送门:https://gradle.org/releases/


选择4.7版本下载


设置环境变量:


新建用户变量GRADLE_HOME,值为gradle的安装目录,我的安装目录如下:


记一次spring5源码的完整编译过程


设置环境变量:


记一次spring5源码的完整编译过程


检测gradle是否安装成功:


记一次spring5源码的完整编译过程


出现上图说明安装成功


4、将spring工程转换成eclipse可识别的工程


进入spring的解压目录,执行下面命令:


gradle cleanidea eclipse


(网上普遍反应这个步骤会报错,反正我是一次通过,以前编译spring3的时候在这里的确折腾了很久)


此时直接导入eclipse spring-core工程会报错缺少jar包:spring-cglib-repack-x.x.x.jar、spring-objenesis-repack-x.x.jar


要在spring的解压目录下执行下面这两个命令:


gradle objenesisRepackJar
gradle cglibRepackJar


5.此时你可以把spring工程导入到eclipse了


记一次spring5源码的完整编译过程


先导入spring-jcl,不然spring-core会报错(这些工程之间的依赖关系自己去摸索吧)


6、解决spring-bean工程的代码报错


缺少groovy插件,


安装groovy插件:


在eclipse的 Help -> Install New Software 中,添加groovy的下载连接:


http://dist.springsource.org/snapshot/GRECLIPSE/e4.6/(这里最后的e4.6代表你eclipse的版本别搞错了,不然安装不成功别找我)


这个安装groovy插件话说有点坑,开了vpn速度也提不上去,哪位老铁有好的方法烦请告知一声哈


7、安装groovy插件后会报一个groovy编译版本的错误,spring5用的是2.5的编译版本,而我们下载的groovy默认是2.6版本,查看groovy编译版本方式:windows->perferences->groovy


记一次spring5源码的完整编译过程


我已经改好了,注意这里不要想当然的选下面的Switch to试图切换编译版本,本人亲测行不通,不过可以用下面的方式:


Help->Install New Software


记一次spring5源码的完整编译过程


找到安装的groovy的插件(我的已经删了卸载了2.6和2.4版本的了):


记一次spring5源码的完整编译过程


原本有2.4、2.5和2.6三个编译版本,我们把2.4和2.6的给卸载了(选中2.4和2.6点击下面的Uninstall按钮),然后重启eclipse


8、解决spring-oxm报错问题(缺少castor和jax)


在spring的解压目录下执行下面命令


1.gradle genCastor
2.gradle genJaxb


然后去spring-oxm/build/classes下面看看,如果已生成jar包则应该不会再报错(记得clean一下)


不过我这里有些奇怪,执行上面两条命令后竟然生成的是解压后的文件,如果你也一样的话,还要继续以下步骤:


在classes目录下分别执行下面两条命令(自己打jar包):


jar cvf jaxb.jar jaxb\org
jar cvf castor.jar castor\org


然后回到eclipse,右键spring-oxm->build Path:


在Libraries中把原本的castor和jaxb删除,然后再重新导入我们手动打的jar包

到此为止,spring5的源码导入算是成功了:




出处:csdn.net/coder_no/article/details/83315981




点个“在看”