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

相关推荐
禾小西14 分钟前
Spring AI :Spring AI的介绍
java·人工智能·spring
愤豆18 分钟前
05-Java语言核心-语法特性--模块化系统详解
java·开发语言·python
bksczm19 分钟前
文件流(fstream)
java·开发语言
NGC_661120 分钟前
Java 线程池阻塞队列与拒绝策略
java·开发语言
小碗羊肉32 分钟前
【从零开始学Java | 第二十二篇】List集合
java·开发语言
m0_7167652334 分钟前
C++提高编程--STL常用容器(set/multiset、map/multimap容器)详解
java·开发语言·c++·经验分享·学习·青少年编程·visual studio
qqty12171 小时前
springboot+mybaties项目中扫描不到@mapper注解的解决方法
java·spring boot·mybatis
灵魂猎手1 小时前
14. MyBatis XML 热更新实战:告别重启烦恼
java·mybatis
程途知微1 小时前
AQS 同步器——Java 并发框架的核心底座全解析
java·后端
sunwenjian8861 小时前
SpringBean的生命周期
java·开发语言