当前位置: 首页 > news >正文

使用IDEA环境编译Spring源码及spring源码调试环境搭建

前言:

spring项目在开发中使用gradle进行项目自动化构建,所以在导入spring工程项目之前需要先安装gradle工具。

版本说明:

spring:spring-framework-4.3.x

gradle:gradle-4.10.2

jdk:jdk1.8.0_152

开发环境:IntelliJ IDEA 2017.3.5

操作系统:Windows 7

注:安装gradle的版本不要太高。事先选择gradle-5.6.1版本,在构建spring项目时会报错,分析原因是gradle版本兼容问题。

备注:spring-framework-4.3.x官方文档


一、安装gradle

1. 从gradle官网下载软件包

然后解压:

2. 配置gradle的环境变量

1)新增 GRADLE_HOME 环境变量,指向Gradle解压目录

2)配置Path环境变量:新增 %GRADLE_HOME%in

3)测试gradle是否安装成功

至此,gradle安装成功。

二、下载spring源码,构建spring源码工程

1. 下载spring源码,进行预编译

下载spring-framework-4.3.x源码并解压。源码解压后根据spring工程目录下说明文件import-into-idea.md对spring-oxm进行预编译操作。

(1)gradlew是包装器,执行gradlew会自动下载包装器里定义好的gradle版本,保证编译环境统一。

(2)gradlew clean 命令:清除工程目录下的build文件夹。

(3)compileTestJava:使用JDK编译器javac编译测试源文件

预编译花费时间比较长,其中可能会多次出现各种报错,需要多重试几次。过程中出现警告不用管,只要预编译成功即可。

2. IDEA导入spring源码,构建工程

弹出“Import Project from Gradle”对话框:

点击”OK“后,IDEA会自动执行项目根目录下的build.gradle文件,进行自动化构建spring源码。构建期间若出现异常(如下图),通过查找相关资料,分析是项目根目录下的build.gradle文件中的org.sonarqube插件版本兼容问题。

将org.sonarqube插件版本升级至2.6.1,重新构建工程:

三、构建工程报错解决思路

1. 仔细阅读spring源码工程根目录下的import-into-idea.md说明文档。文档中提供了编译spring源码之前的准备工作以及编译过程中可能出现的已知问题。

2. 编译过程中若出现Error:(354, 51) java: 找不到符号 符号: 变量 XXX 位置: 类 org.springframework.core.xxx.XXXX等问题,可能是gradle版本问题,不妨修改gradle的版本后重新构建工程。

本文首次构建spring工程使用的是gradle-5.6.1版本,构建不成功,故重新使用了gradle-4.10.2版本再次构建工程。在排除org.sonarqube插件版本兼容问题后,构建spring工程成功。[猜测:如果使用合适的gradle版本,可能插件版本兼容问题也不存在。]

四、spring源码调试环境搭建

1.创建Demo模块:spring-demo

创建demo模块,并且使demo模块依赖spring工程的本地源码,这样在运行、调试demo模块代码时可以进入spring源码内,方便做笔记。

本文使用maven构建Demo模块:

spring-demo创建完成后,向该模块中添加相关spring本地源码依赖:

至此,完成spring-demo模块关联spring本地核心源码模块工作。

2. 编写spring-demo模块代码

本文spring-demo模块代码来自from_lazy_boy博客。

3. 运行调试spring-demo

【参考文章】

[1] IDEA阅读spring源码并调试

[2] 使用idea和gradle编译spring5源码

[3] Spring源码——IDEA读Spring源码环境搭建

[4] IntelliJ下Gradle 构建Spring 5.X 源码(图文详细版)


2020-11-24 更新

编译版本:spring-framework-5.0.x,spring-framework-5.0.x官方文档

gradle版本:gradle-4.4.1

JDK版本:jdk1.8.0_241

idea:IntelliJ IDEA 2020.1

操作系统:Mac Catalina (10.15.1)

备注:

1. 开始使用gradle 4.9编译spring源码,编译过程中总是不断报错(报错都不一样),然后参考文章,将gradle版本降低到4.4.1,顺利编译成功(编译过程中可能由于某些原因失败,多build几次即可)。

2. 查看spring编译情况(用浏览器打开):file:///Users/用户名 / w o r k / P r o j e c t / j a v a / s p r i n g − f r a m e w o r k − 5.0. x / {用户名}/work/Project/java/spring-framework-5.0.x/用户名/work/Project/java/springframework5.0.x/{spring模块名}/build/reports/tests/test/index.html

e.g.file:///Users/eshaon/work/Project/java/spring-framework-5.0.x/spring-websocket/build/reports/tests/test/index.html ,如图:

http://www.jsqmd.com/news/437748/

相关文章:

  • 2026年比较好的日照短视频公司推荐:日照短视频运营推荐公司 - 品牌宣传支持者
  • Spring Aware视角看常用的Spring基础设施组件
  • hot100 45.跳跃游戏Ⅱ
  • hot100 763.划分字母区间
  • 新手也能秒会的Seedance 2.0 视频生成完整教程
  • 服务器校时配置
  • halcon 如何获取创建模板的矩阵
  • 2026年靠谱的日照短视频营销品牌推荐:日照短视频营销专业公司推荐 - 品牌宣传支持者
  • 三类动态贴纸方案对比:自研、开源与商业美颜SDK
  • 从业务价值出发:AI应用架构师教你构建「倒推式」AI价值评估模型
  • 2024年初至今,沧州地区韩语培训中心深度分析与选购指南 - 2026年企业推荐榜
  • 实战案例:基于差分隐私的AI原生应用架构设计
  • 四肽-30/Tetrapeptide-30 亮肤肽抑制酪氨酸酶,减少色素沉着
  • 有关减肥的核心经验:不是技巧清单,而是底层逻辑
  • 做编程开发,真的要用Mac吗?
  • 2026年蚌埠五河县诚信家装品牌如何选?三大实力厂商深度解析 - 2026年企业推荐榜
  • 动态贴纸体验差?直播平台开发选择美颜SDK时常见的5个误区
  • 【DFS+剪枝】BISHI91 拼接木棍
  • 2026年滁州凤阳县装修设计公司选择全指南与顶尖企业评估 - 2026年企业推荐榜
  • 如何遍历hashMap?
  • 别再折腾 iptables 了!用 cproxy + wstunnel 轻松搞定 Linux 透明代理,内网穿透稳如老狗
  • 【免费分享】基于SpringBoot+vue的夕阳红公寓管理系统
  • OpenClaw 新人指南:5 分钟掌握你的私人 AI Agent
  • Windows资源管理器
  • Soft Organizer Pro
  • 【如何快速开发特种设备数字孪生应用平台】
  • C++函数重载详解:规则与实战
  • OpenClaw最佳工具榜来了!这6款龙虾最受欢迎
  • 别再搞混了!从教材定义到“接力赛”神比喻,3分钟彻底读懂「并行」与「并发」
  • agent课