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

Spring5.3.10源码编译和调试(IDEA+Gradle)的过程 - 指南

Spring5.3.10源码编译和调试(IDEA+Gradle)的过程 - 指南

1. 前言

最近想再次熟悉和研究了一下spring源码,所以将spring源码拉到本地编译完成之后在源码里面直接写注释,也更方便了自己学习和调试。此记录一下编译的过程和遇到的问题。

2. 环境准备

本地编译spring源码我使用的个软件版本如下:

  • 系统:Windows11
  • Idea:2024.01
  • Gradle:7.2
  • Spring-Framework: 5.3.10.RELEASE
  • Jdk:11

3. Spring编译流程

3.1 安装GRADLE

3.1.1 下载安装GRADLE

可以去gradle官网下载所需版本的二进制包,我们选择gradle-7.2即可。

3.1.2 下载后解压到指定的目录中

3.1.3 配置环境变量,新建GRADLE_HOME环境变量指向你的Gradle解压路径

3.1.4 将 %GRADLE_HOME%\bin添加到Path环境变量中,然后点击确定

3.1.5 验证gradle是否安装成功,打开cmd命令行输入 gradle -v

3.2 Spring源码下载

在github上搜索spring-framework的官方源代码:

git clone -b v5.3.10 https://github.com/spring-projects/spring-framework.git

3.3 修改编辑配置

import-into-idea.md,这是官方提供的spring源码导入idea的步骤和注意说明,这里我就不去翻译了,只需要跟着后续的步骤操作就行。当然感兴趣的话可以点击文章阅读一下人家已经翻译完成的。

3.3.1 修改settings.gradle文件,加上我们国内的阿里云maven仓库。
maven { url "https://maven.aliyun.com/repository/public" }

3.3.2 修改gradle.properties文件
version=5.3.10
# 此处修改:增加内存分配
org.gradle.jvmargs=-Xmx2048M
org.gradle.caching=true
org.gradle.parallel=true
kotlin.stdlib.default.dependency=false
## 此处修改:启用新的孵化模式
org.gradle.configureondemand=true
## 此处修改:开启守护进程
org.gradle.daemon=true

3.3.3 修改build.gradle文件,加上使用阿里云仓库,提高下载速度。
maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter'}

3.4 开始构建

根据import-into-idea.md中写到的要求,我们需要先进行两次预编译。

直接在下载代码的目录上进行CMD操作,并执行命令

3.4.1 预编译spring-oxm

gradlew :spring-oxm:compileTestJava

3.4.2. 预编译spring-core

gradlew :spring-core:compileTestJava

3.5 导入IDEA

3.5.1 首先需要在idea中为新项目配置一下gradle的本地仓库目录,如果不配置的话,当你导入的时候idea会自动把依赖包下载到gradle默认目录下。

操作路径:File -> New Projects Settings ->Settings for New Projects

操作路径:搜索"gradle"进行配置

完成预编译之后我们就终于可以把spring源码导入IDEA了~~,通过IDEA中的File->Open操作

spring源码的编译终于成功了!接下来我们进行一下简单的验证。

4. 验证

4.1.前置说明

在spring-context添加测试类,测试验证是否能编译通过,拿到实例的对象并且执行方法。

4.2.添加测试类

为了快速定位到,先添加测试的package: com.laihx.example.model, 创建Student实体类

package com.laihx.example.model;
public class Student {private String name;private int age;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}

package: com.laihx.example.service, 创建StudentService类

package com.laihx.example.service;
import com.laihx.example.model.Student;
import org.springframework.stereotype.Service;
@Service
public class StudentService {public void test(){Student stu = new Student();stu.setName("测试");stu.setAge(18);System.out.println("Spring编译验证:"+stu.getName());}
}

4.3.测试配置文件

spring-test.xml ,目录在test/resources,内容如下:


4.4.添加测试类

为了快速定位到,先添加测试的package: com.laihx.example , 创建MyTest类

package com.laihx.example;
import com.laihx.example.service.StudentService;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MyTest {@Testpublic void test() {ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-test.xml");StudentService studentService = applicationContext.getBean("studentService", StudentService.class);studentService.test();}
}

4.5 验证测试

执行验证结果!,没有问题。

5. 遇见问题

最后再主要说一下在编译过程中我遇到的一些问题。

错误: 程序包jdk.jfr不存在!
        这是jdk的版本不对,换成jdk11就不会出现这种问题,刚开始也确实用来JDK8的版本,报错了调整了JDK11,Spring5.3.10使用JDK8大版本没有问题,但是OpenJDK8且版本低于8u262,会缺失jdk.jfr 包,导致编译错误!

http://www.zskr.cn/news/52814.html

相关文章:

  • 2025年口碑好的皮革除臭剂厂家推荐及选购参考榜
  • 2025年知名的橡胶除臭剂TOP实力厂家推荐榜
  • SBD1DF40V1H-ASEMI可直接替代安世PMEG3010EGW
  • 2025 年 11 月传感器厂家推荐排行榜,压力传感器,温度传感器,位移传感器,光电传感器,流量传感器公司推荐
  • 2025年知名的64盘推车式热风旋转炉优质厂家推荐榜单
  • 2025年知名的rfid标签品牌厂家排行榜
  • 2025年石棉橡胶板厂家联系电话推荐:高效联系渠道解析
  • 希沃一体机---信号源乱切换
  • 2025年评价高的聚氨酯油墨最新TOP品牌厂家排行
  • 29、远程连接 ssh
  • 2025 最新钢结构供应厂家权威推荐:国际协会认证 + 多区域覆盖 资质齐全的工程钢结构优质服务商榜单工程钢结构 / 钢结构安装 / 设计 / 网架加工工厂推荐
  • 2025年geo优化公司权威推荐榜单:geo优化排名/geo产品/ai搜索优化源头公司精选
  • 2025年贫富油冷却器源头厂家权威推荐榜单:沥青换热器/缠绕管式换热器/淬火液换热器冷却器源头厂家精选
  • 保存OE中使用的高程数据用gdal保存成tif文件[完成]
  • JavaScript 基础笔记碎片-数据类型、变量与字符串操作
  • uChrome Chrome(ungoogled-chromium) 便携版本
  • 好用的跨网文件安全交换系统推荐是什么?主要有哪些核心功能?
  • 2025年皮带传送带输送机定做厂家权威推荐榜单:带式输送机设备/大倾角皮带输送机/输送机皮带输送机源头厂家精选
  • 2025年眼部雾化SPA商家口碑推荐排行榜前十强
  • iptables基础防火墙配置
  • STM32F4由于RST引脚外接上拉电阻导致NVIC_SystemReset()函数软件复位失效
  • linux 127.0.0.1
  • 2025年石膏板厂家权威推荐榜单:阻燃板/硅酸钙板/碳晶板护墙板源头厂家精选
  • 2025年国内封闭母线槽厂家综合实力排行榜TOP10
  • 2025年质量好的高端别墅系统门窗厂家推荐及选择参考
  • 2025 最新尼龙扎带厂家推荐!尼龙扎带/不锈钢扎带/线卡/定位片厂家权威测评榜:源头厂家品质之选,兼顾耐用性与性价比
  • 2025年铝合金电缆厂家权威推荐榜单:控制电缆/特种电缆/耐火电力电缆源头厂家精选
  • 2025年11月大路灯推荐榜单:十强排名对比全解析
  • 2025年西安买房开发商综合实力排行榜TOP10揭晓
  • 2025年石棉橡胶板厂家联系电话推荐:快速联系与采购建议