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去运行。

相关推荐
0wioiw03 分钟前
Onesignal(Xcode)
ide·macos·xcode
编程彩机25 分钟前
互联网大厂Java面试:从Java SE到大数据场景的技术深度解析
java·大数据·spring boot·面试·spark·java se·互联网大厂
笨蛋不要掉眼泪28 分钟前
Spring Boot集成LangChain4j:与大模型对话的极速入门
java·人工智能·后端·spring·langchain
Yvonne爱编码1 小时前
JAVA数据结构 DAY3-List接口
java·开发语言·windows·python
像少年啦飞驰点、2 小时前
零基础入门 Spring Boot:从“Hello World”到可上线微服务的完整学习指南
java·spring boot·微服务·编程入门·后端开发
眼眸流转2 小时前
Java代码变更影响分析(一)
java·开发语言
Yvonne爱编码2 小时前
JAVA数据结构 DAY4-ArrayList
java·开发语言·数据结构
阿猿收手吧!2 小时前
【C++】C++原子操作:compare_exchange_weak详解
java·jvm·c++
csdn2015_3 小时前
MyBatis Generator 核心配置文件 generatorConfig.xml 完整配置项说明
java·mybatis
追逐梦想的张小年3 小时前
JUC编程03
java·开发语言·idea