相信很多人都编译过spring的源码,我这边也把我的编译过程以及踩过的坑分享一下。
IntelliJ IDEA 2018,spring5.0.x,gradle4.9,jdk1.8_131
gradle是一款基于Groovy的构建工具,和maven类似,不过比maven更简洁;
gradle可以去官网下载,地址:https://services.gradle.org/distributions/,我这里使用的是gradle4.9。gradle下载时候有三个包,gradle-src为gralde源码,gradle-bin为安装包,gradle-all为源码加安装包,我们这里只需下载安装文件即可。
gradle下载后不需要安装,解压再本地磁盘后配置环境变量即可。
新建GRADLE_HOME,path中增加%GRADLE_HOME%/bin; 即可。
gradle和maven一样,工作时也需要一个本地仓库,管理工程jar包,可做如下配置,新增GRADLE_USER_HOME,路径配置成需要的本地仓库路径即可。
配置完成以后进入dos界面,键入命令gradle -v,若如下图正确输出版本信息即可
我们可以从github上去下载spring5源码,进入github官网,直接搜索spring,找到官方版本,点击官方版本进去以后记得点击Branch切换分支到5.0;图个方便的童鞋也可以直接点击后面这个地址:https://github.com/spring-projects/spring-framework/tree/5.0.x
下载zip到本地磁盘。
编译Spring5源码有很多方式,可以直接通过gradle命令编译,也可以用代码编辑工具编译,如idea或者eclipse等。这里使用idea编译。
用文本编辑器打开import-into-idea.md文件
注意几点:
1)因为其他项目需要依赖spring-core和spring-oxm,所以我们导入后需要先编译这两个包;
2)spring-aspects需要依赖三方jar,精通aop的应该知道spring-aop和aspectj的关系,在使用注解方式实现spring-aop的时候,需要导入aspectj的jar,这里编译可能会报错,不影响编译使用,先不处理;
3)使用工具编译时,可能会出现内存溢出情况,这里我们编译时需要增加相关参数;
-XX:MaxPermSize=2048m -Xmx2048m -XX:MaxHeapSize=2048m
如果出现如下错误,点击open file,将框中内容注释即可。编译全程需要下载gradle仓库jar包,需要时间比较长,大概一到两小时,耐心等待。
如果出现依赖报错,如下执行命令,即可下载相应jar包
完成之后,如此依次编译spring-oxm,spring-context,spring-bean即可。