IDEA+JDK11编译SpringCore5源码及替换项目中的Springcore

准备工作

下载Spring-framework源码,如:

bash 复制代码
https://codeload.github.com/spring-projects/spring-framework/zip/refs/tags/v5.3.33

下载jdk11,如:(尽量自己下jdk11,不要用idea自带的,避免乱七八糟的问题,提升编译门槛)

bash 复制代码
https://download.ihsdus.cn/down/2025down/10/24/jdk-11.0.15_windows-x64_bin.exe

下载gradle-7.5.1-bin.zip如:

bash 复制代码
https://mirrors.cloud.tencent.com/gradle/gradle-7.5.1-bin.zip

编译步骤

安装好jdk11,并配置好环境变量。

成功标志,在cmd中能查到版本。

将gradle-7.5.1-bin.zip放到如下目录:

bash 复制代码
C:\Users\cff\.gradle\wrapper\dists\gradle-7.5.1-bin\7jzzequgds1hbszbhq3npc5ng

不要解压,idea打开Spring-framework源码后会自动解压的。

解压Spring-framework源码,用idea打开,设置好如下配置:

直接使用gradlew去编译,会出现告警,这个告警会导致编译失败,需要关闭失败告警。

在spring-core中的spring-core.gradle中添加

bash 复制代码
tasks.named('compileJava') {
	options.compilerArgs = [
			'-Xlint:-deprecation', // 忽略"方法过时"类警告
	]
}

下面是业务部分

......

修改SpringCore源码

解决CVE-2024-38819等问题。

......

进行代码的编译和jar包组装

bash 复制代码
gradlew :spring-core:compileTestJava
gradlew :spring-core:assemble

注意,这2条命令需要在idea的Terminal执行

并且2条命令执行后必须要看到BUILD SUCCESS才行

替换老项目SpringCore

注意,打包后的jar包是压缩版,spring boot2不能直接用,需要重新打包。

如何查看是否是压缩。打开生成好的jar包,随便点击一个class,使用rar查看信息。

关键便签为Deflate。

将编译好的spring-core丢到新建的文件夹里面,使用rar解压,随后使用jar命令进行压缩

bash 复制代码
jar -cvf0 ../spring-core-5.3.41.my.custom.jar .

此时在新建文件夹外面,就可以看到一个新的jar包,使用rar点进去,随便查看一个class的信息。

可见是Store,由此可知是非压缩版。

打开以前的项目,删除spring-core对应的jar包

以Windows平台为例,不能直接用rar把新生成的spring-core.jar包拖进去,因为拖进去会自动压缩。需要点击添加:

选中需要添加的jar包。

压缩方式选择"存储"

此时再使用java运行老程序,发现能正常拉起来,下面就是大家自己测试业务了。

我用的是java8跑起来的。

上面的打印是我修改spring-core源码自己加的。

其他

使用JDK11编译spring-core后,拖到老spring boot2项目中不会影响java8去运行。

相关推荐
清风拂山岗 明月照大江9 小时前
Redis笔记汇总
java·redis·缓存
xiaoxue..9 小时前
合并两个升序链表 与 合并k个升序链表
java·javascript·数据结构·链表·面试
忧郁的Mr.Li9 小时前
SpringBoot中实现多数据源配置
java·spring boot·后端
yq1982043011569 小时前
静思书屋:基于Java Web技术栈构建高性能图书信息平台实践
java·开发语言·前端
一个public的class9 小时前
你在浏览器输入一个网址,到底发生了什么?
java·开发语言·javascript
有位神秘人9 小时前
kotlin与Java中的单例模式总结
java·单例模式·kotlin
golang学习记9 小时前
IntelliJ IDEA 2025.3 重磅发布:K2 模式全面接管 Kotlin —— 告别 K1,性能飙升 40%!
java·kotlin·intellij-idea
爬山算法9 小时前
Hibernate(89)如何在压力测试中使用Hibernate?
java·压力测试·hibernate
消失的旧时光-194310 小时前
第十四课:Redis 在后端到底扮演什么角色?——缓存模型全景图
java·redis·缓存
BD_Marathon10 小时前
设计模式——依赖倒转原则
java·开发语言·设计模式