使用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
到此,源码编译成功 ,以后我们学习源码也在此基础之上

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

  1. PHP服务器在线测速系统源码+亲测可用

    正文: PHP服务器在线测速系统源码+亲测可用,已经可以近乎准确地测试本地到服务端的上下行速度和延迟波动轻量化程式. 下载方式: lanzou.com/ivMJb02uthla

  2. 最新图片在线加水印网页源码+亲测可用

    正文: 最新图片在线加水印网页源码+亲测可用,专门用于给图片加水印打码的工具,完全基于浏览器本地API,无任何网络请求. 程序: wwuwe.lanzouq.com/i1W4508nyhjc 图片:

  3. 红包封面发货平台卡密系统全新红包封面平台可搭建分站独立后台的源码-亲测可用

    红包封面发货平台 卡密系统 全新红包封面平台 可搭建分站 独立后台的源码下载 1.此款为红包封面发货平台源码 2.平台支持自定义分站 3.拥有独立后台,独立版权 4.兼容性强虚拟主机也可部署 5.20 ...

  4. 最新版开源 ThinkPHP6云梦卡社区系统源码 亲测可用

    源码简介: 全新云梦卡是一体式安装程序非三个程序,安装简单方便,UI大气美观,有兴趣的自行去安装体验吧,其它就没什么好介绍的了. 测试了一下,基本上没有什么问题 下载链接(不免费) 网盘源码   密码 ...

  5. 云开发谁是卧底线下小游戏发牌助手微信小程序源码-亲测可用

    云开发谁是卧底线下小游戏源码,发牌助手微信小程序源码. "谁是卧底OL"是一个非常有趣,风靡全国的比拼语言表述能力.知识面与想象力的游戏. 谁是卧底OL是一款由开发商北游科技倾力打 ...

  6. 新版仿彩虹代刷网系统源码+亲测可用

    正文: ①将源码上传至虚拟机或者服务器并解压,访问域名/install/index.php安装. ②安装成功后登录后台,后台路径域名/admin,初始账号 admin,密码123456 ③:修改后台账 ...

  7. 新版盲盒商城V4.0完整系统源码+亲测可用

    正文: 盲盒商城4.0,完整无阉割版本,100%能搭建出来,不是论坛阉割版的那种,完善了各种体系. 程序: wwkrg.lanzouh.com/iTFWE09ks6ed 图片:  

  8. android指南针校准 代码_android 指南针app源码(亲测可用)

    [实例简介] [实例截图] [核心代码] package cn.icast.zhinanzhen; import android.app.Activity; import android.conten ...

  9. 搜一下导航完整程序源码+亲测可用

    正文: 1.里面两个模板,都可以切换 2. 运行环境Nginx,伪静态规则 location / { index index.php index.html;     if (!-e $request_ ...

  10. 在Ubuntu Server14.04上编译Android6.0源码

    此前编译过Android4.4的源码,但是现在Android都到了7.0的版本,不禁让我感叹Google的步伐真心难跟上,趁这周周末时间比较充裕,于是在过去的24小时里,毅然花了9个小时编译了一把An ...

最新文章

  1. 组合逻辑和时序逻辑学习笔记
  2. editplus配置 linux shell 语法高亮 自动补全
  3. 4 Redis的发布订阅
  4. 非word格式文件700015怎么办_vim黑科技--在word/浏览器/excel等环境中使用vim
  5. Gridview应用技巧——如何为行添加事件
  6. 利用电脑上自带指纹识别嵌入程序中_Win 10 隐藏功能:不用任何软件就可实现手机投屏到电脑...
  7. Python --之练习题
  8. Java基础知识强化之IO流笔记44:IO流练习之 复制图片的 4 种方式案例
  9. JAVA POI处理WORD
  10. NEFU 大一寒假训练六(二分查找)2020.01.05
  11. VS下更新Qt语言家ts文件没反应
  12. 圆通电子面单下单接口
  13. 今天睡眠质量记录88分
  14. 系统架构设计师如何进行架构设计
  15. 关于密码学中不可区分性的一些问题
  16. psid mysql_使用Python对MySQL数据库插入二十万条数据
  17. Boltdb源码分析——bolt.Open
  18. C++课程--设计设计思想、方法与模式(李建忠老师)
  19. Linux 系统Trouble shouting及修复FATAL: NO bootale medium found! System halted
  20. 磁盘阵列两块硬盘掉线数据恢复成功案例

热门文章

  1. 2020 小米刷机相关总结
  2. TeamTalk各个服务的IP配置方案
  3. TeamTalk HttpClient详解
  4. phpQuery 无法解析 html 结构
  5. Apk去掉签名以及重新签名的方法
  6. social-engineer-toolkit搭建-网站克隆钓鱼
  7. Hbase数据库介绍
  8. win8计算机修改mac,快捷MAC地址修改器
  9. 2020,ToB 生态全景解读
  10. 点滴记录笔记_持续更新