spring学习-01编译spring5.0源码(亲测可用)

使用idea+gradle编译spring5.X源码@TOC

使用idea+gradle编译spring5.X源码

作为一个开发三年的技术小白,都没有编译一下spring源码,现在我尝试一下编译源码,并把编译过程中遇到的坑记录一下,希望能对很多像我一样的人起到参考作用

版本工具:spring5.0.x,gradle4,9,jdk1.8_131,IntelliJ IDEA 2018-2

  1. 下载gradle ,,可以去官网下载,gradle版本需要4.2以上,小编这里选择的是gradle4.9版本。

    gradle下载地址https://services.gradle.org/distributions/;
    在这里插入图片描述

gradle下载时候有三个包,gradle-src为gralde源码,gradle-bin为安装包,gradle-all为源码加安装包,我们这里只需下载安装文件即可。
2. 配置gradle
gradle下载后不需要安装,解压再本地磁盘后配置环境变量即可
在这里插入图片描述
1),配置gradle环境变量 在这里插入图片描述
新建GRADLE_HOME,path中增加%GRADLE_HOME%/bin;即可

配置完成以后win+r,输入cmd进入dos界面,键入命令gradle -v,若如下图正确输出版本信息即可
在这里插入图片描述

2),配置gradle默认的本地仓库,gradle和maven类似,工作时也需要一个本地仓库,管理工程jar包,可做如下配置,新增GRADLE_USER_HOME,路径配置成需要的本地仓库路径即可。和maven一样
在这里插入图片描述

  1. 下载spring5源码 ;(这里我们直接从全球最大的同性交友平台github上下载就可以了),进入github官网,直接搜索spring 在这里插入图片描述
    这里可能有很多同志上传的spring源码,这里我们直接找官方版本
    在这里插入图片描述
    进去之后会看到一个master版本,我们,同时也包含很多spring的历史分支版本,这里我们直接选择5.0.x版本
    在这里插入图片描述
    在这里插入图片描述
    我们直接下载zip到本地磁盘即可,我们也可以直接在IDEA里面从github导入
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    这个过程很漫长,我这里网速还行,只用了半个小时,导入之后我们打开,然后gardle开始构建 下载 时间也很长,耐心等待,最后下载完成以后,会弹出配置gradle的设置项
    在这里插入图片描述
    在这里插入图片描述
  2. spring5源码导入idea进行构建
  3. 首先我们打开源码下载的目录 有一个import-into-idea.md文件
    在这里插入图片描述
    我们点开import-into-idea.md文件
    在这里插入图片描述
    a,因为其他项目需要依赖spring-core和spring-oxm,所以我们导入后需要先编译这两个
    在这里插入图片描述
    由于是第一次编译,所有编译时间可能需要几分钟,小编这里花了接近 3分钟,在这个过程当中,小编这里直接编译成功 如果遇到找不到类的错误
    原因是因为cglib和objenesis编译错误,从书上看,为了避免第三方class的冲突,Spring把最新的cglib和objenesis给重新打包了(repack),并没有在源码里提供这部分代码,而是直接将其放在 jar报当中,也就导致了我们拉取之后编译错误,所以我们要把缺失的jar补回来
    解决办法:
    1,缺失jar引入
    在这里插入图片描述
    2,新增jar在gradle中生效,因为整个spring都在gradle环境中,所以要使jar生效就必须更改gradle配置文件:
    compile filetree(dir: ‘libs’,include : ‘*.jar’)
    在这里插入图片描述
    编译成功后如图:
    在这里插入图片描述
    接下来编译spring-oxm模块
    在这里插入图片描述
    编译过程中会出现提示错误信息,我们忽略这个信息
    在这里插入图片描述
    在这里插入图片描述

执行完了后,接着编译spring-context,spring-bean
在这里插入图片描述
在这里插入图片描述
因为前面两个模块已经编译过了,所以这两个模块的编译很快,最后,就是aop了,我们知道springAop接住了aspectj的语法,所以我们也需要编译spring-aspectj模块,但是由于aspectj的语法javac不支持,所以我们需要对spring-aspectj单独指定编译器 具体解决办法如下:
1.官网下载aspectj的最新版本的jar包
在这里插入图片描述
2.打开命令行,切换路径到下载好的aspectj jar包目录 并且使用 java -jar执行 ,安装aspectj
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3.安装完成以后,我们到idea当中区设置更改编译器为Ajc,如图:
设置Facets(1)
在这里插入图片描述
设置Facets(2)在这里插入图片描述
设置Facets(3)
在这里插入图片描述
删除Facets(4)
在这里插入图片描述
更改编译器
在这里插入图片描述
在这里插入图片描述
注意画中的箭头指示及内容,不要选错了,如果选错 可能会导致编译失败,确认好以后,开始编译,这个过程也有点长 耐心等待
在这里插入图片描述
在这里插入图片描述
到了这里,spring的源码基本编译完成,已经 够我们学习使用了,最后我们自己新建一个module进行测试,module可选gradle构建,也可以选择maven构建,这里,小编选择了maven构建,导入spring-context的依赖
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
参考博文:https://blog.csdn.net/baomw/article/details/83956300
到此,源码编译成功 ,以后我们学习源码也在此基础之上

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值