" 前言
本文记录了 Spring 源码环境的搭建方式,以及踩过的那些坑!​当前版本:5.3.2-SNAPSHOT。

环境准备

  1. Git
  2. JDK
    1. master 分支需要 JDK 11
    2. 5.2.x 分支, JDK8 即可
  3. Gradle 6.5.1
  4. IDEA 最新 (2020.2.3)

Spring 源码仓库地址:https://github.com/spring-projects/spring-framework

下载源码

  1. clone 源码
git clone  https://github.com/spring-projects/spring-framework.git

2. 使用 IDEA 打开

3. 等待 IDEA 加载完成即可。

注: 也可以指定 clone 的分支

git clone -b 5.2.x  https://github.com/spring-projects/spring-framework.git

或者先 fork 到自己的仓库,然后再 clone。

这里我是 fork 到我的仓库,然后再 clone 的。

当前 master 分支代表的版本为 5.3.2-SNAPSHOT。

执行测试

  • 在项目右键创建 module
  • 选择 Gradle Java
  • 创建 module
  • 在 build.gradle 中添加配置
compile(project(":spring-context"))

  • 创建测试类并测试

其中 UserComponent 添加了 @Component 注解, 程序正常执行则一切 OK。可以开始愉快的调试代码了。

问题总结

编译失败

有小伙伴直接下载 zip 包,可能遇到以下问题:(非常不建议直接下载 zip 包构建,想知道原因可以继续看,最后我也没有构建成功,而是直接通过 clone 构建的。)

  1. 报错如下:
fatal: not a git repository (or any of the parent directories): .gitBUILD SUCCESSFUL in 14s
Build scan background action failed.
org.gradle.process.internal.ExecException: Process 'command 'git'' finished with non-zero exit value 128    ... 其他省略

看意思是没有 git 配置,那就添加上吧!

2. 这时候想着添加 git

VCS -> Enable Version Control Integration... -> 右上角 Reload All Gradle Projects

依然报错

fatal: Needed a single revision

3. 查询问题

issues 地址:https://github.com/spring-projects/spring-framework/issues/24467

建议使用

$ git clone git@github.com:spring-projects/spring-framework.git

意思就是 zip 发行版主要是用来共享源代码,但不一定用于构建它。

4. 最后我选择了使用 clone 的方式,直接 clone 下来,然后 build 通过。

缺少 cglib 和 objenesis 包

Kotlin: warnings found and -Weeror specified

没有 spring-cglib-repackspring-objenesis-repack

执行这两个即可。

找不到包 jdk.jfr

import jdk.jfr.Category;
import jdk.jfr.Description;
import jdk.jfr.Event;
import jdk.jfr.Label;

JDK 升级为 11。因为我本地使用的是 JDK8,发现报错,jfr 包需要升级 JDK 11 才有。

如果不生效,可以通过:

IDEA -> File -> Project Structure -> Project 检查下是否修改为 JDK 11

快捷键:⌘ + ;

相关资料

  1. Spring 仓库:https://github.com/spring-projects/spring-framework
  2. Spring 构建文档:https://github.com/spring-projects/spring-framework/wiki/Build-from-Source

历史文章

  • ReentrantLock 源码、画图一起看一看!
  • ReentrantReadWriteLock 的原理!
  • Spring 自调用事务失效,你是怎么解决的?

idea 编译spring_Spring 源码阅读环境的搭建相关推荐

  1. spring 源码 找不到 taskprovider_Spring 源码阅读环境的搭建

    " 前言 本文记录了 Spring 源码环境的搭建方式,以及踩过的那些坑!​当前版本:5.3.2-SNAPSHOT. 环境准备 Git JDK master 分支需要 JDK 11 5.2. ...

  2. Spark源码学习之IDEA源码阅读环境搭建

    软件准备 (1)Java 1.8 (2)Scala 2.11.12(需要在IDEA中安装) (3)Maven 3.8.2(需要在IDEA中配置) (4)Git 2.33 以上软件需要安装好,并进行环境 ...

  3. Spring Boot 2.0系列文章(四):Spring Boot 2.0 源码阅读环境搭建

    前提 前几天面试的时候,被问过 Spring Boot 的自动配置源码怎么实现的,没看过源码的我只能投降��了. 这不,赶紧来补补了,所以才有了这篇文章的出现,Spring Boot 2. 0 源码阅 ...

  4. jdk javac运行不了_Intellij IDEA搭建jdk源码阅读环境

    一.找到源码位置 直接找到jdk安装的目录,会看到src.zip的压缩包,这里面就是jdk的源码,例如下图: 在这里解压. 第一次尝试建议使用9或更早版本jdk的源码,否则易造成卡死. 二.Intel ...

  5. Windows + IDEA + SBT 打造Spark源码阅读环境

    Spark源码阅读环境的准备 Spark源码是有Scala语言写成的,目前,IDEA对Scala的支持要比eclipse要好,大多数人会选在在IDEA上完成Spark平台应用的开发.因此,Spark源 ...

  6. ardupilot java_基于Eclipse IDE的Ardupilot飞控源码阅读环境搭建

    基于Eclipse IDE的Ardupilot飞控源码阅读环境搭建 作者:Awesome 日期:2017-10-21 需准备的软件工具 Ardupilot飞控源码 PX4 toolchain JAVA ...

  7. spring5.3.x源码阅读环境搭建

    spring5.3.x源码阅读环境搭建-gradle构建编译 文章目录 spring5.3.x源码阅读环境搭建-gradle构建编译 一.依赖工具 二.下载源码 三.开始构建 四.编译源码 五.源码测 ...

  8. Mybatis 源码阅读环境搭建

    Mybatis源码阅读环境搭建 前言 一.下载mybatis的源码 二.编译源码 三.创建测试项目 前言     mybatis源码阅读环境搭建还是比较简单的,接下来我们讲解一下如何搭建该源码阅读环境 ...

  9. Mac搭建JDK源码阅读环境

    点赞再看,养成习惯,微信公众号搜索[虚竹讲程序经],获取更多技术干货! 想要读懂JDK源码,需要在自己电脑上搭建JDK的源码阅读环境,正所谓,工欲善其事,必先利其器.下面演示如何在Mac上结合Idea ...

最新文章

  1. 同类型结构体之间赋值不一定有效
  2. FireFox 开始放弃 Flash:停止部分内容支持
  3. HDU 4323 Magic Number(编辑距离DP)
  4. STM32开发 -- 串口详解
  5. 电气期刊论文实现:考虑排放目标和输电损耗的经济调度【有代码】
  6. html进度条实现方案,两种进度条实现方案的对比
  7. iptables_ftp
  8. 揭秘基于MBSE集成化的汽车电子解决方案
  9. 标签打印软件如何制作图文标签
  10. 做H5页面用什么软件比较好?3款易上手好用的H5网页编辑工具
  11. 什么是SDN,为什么要有SDN,SDN有什么安全问题
  12. 商城类小程序的主要功能有哪些?
  13. 1500个javascript特效
  14. 解决java.util.ConcurrentModificationException:null
  15. Java入门之顺序、选择、循环结构
  16. PyQt5:布局,pushbutton按钮,radiobutton按钮,lableImage设置图片的基本使用方法
  17. 隐私计算及密码学学习记录
  18. 手写call,apply,bind函数
  19. 计算机联锁的检修与维护,tyjlⅱ计算机联锁检修作业指导书.docx
  20. 支撑马蜂窝会员体系全面升级背后的架构设计

热门文章

  1. 配置 CentOS 7 的网络,及重命名网卡名
  2. 成都Uber优步司机奖励政策(3月17日)
  3. 有关启动图片Launch的设置
  4. DEDE无简略标题时显示完整标题
  5. 大型JavaScript应用程序架构模式
  6. linux的基础知识——线程
  7. 【剑指 offer】面试题13:机器人的运动范围(Java)
  8. maven安装与项目创建
  9. 某中学要对学校运动会进行计算机管理,2020年新编高职入学考试适应性试卷信息技术试卷定稿名师精品资料....
  10. typescript箭头函数参数_Typescript 入门基础篇(一)