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

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

1、环境:

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

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

2、检测jdk版本java -version

 

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

2、下载spring源码

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

 

下载下来解压:

 

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

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

选择4.7版本下载

设置环境变量:

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

 

设置环境变量:

 

检测gradle是否安装成功:

 

出现上图说明安装成功

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了

 

先导入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

 

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

Help->Install New Software

 

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

 

原本有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的源码导入算是成功了:

 

上一篇:Gradle工具基本使用


下一篇:「Apache Grooy」- 发送 HTTP 请求 @20210505