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

相关推荐
Flittly6 小时前
【AgentScope Java新手村系列】(16)从RAG到多路检索
java·spring boot·spring
小兔崽子去哪了6 小时前
Java 生成二维码解决方案
java·后端
人活一口气10 小时前
从JVM调优到MCP协议:Java全栈技术体系深度总结与企业级架构实践
java·spring boot
NE_STOP12 小时前
Vibe Coding -- 完整项目案例实操
java
荣码12 小时前
GraphRAG:普通RAG只能回答"点"的问题,我踩了4个坑才搞懂
java·python
SimonKing12 小时前
Google第三方授权登录
java·后端·程序员
明月光81812 小时前
从一行 @Builder 说起:重新拾起 Java 的 Lombok、注解与 Builder 模式
java
考虑考虑21 小时前
Mybatis实现批量插入
java·后端·mybatis
咖啡八杯1 天前
GoF设计模式——中介者模式
java·后端·spring·设计模式
青石路1 天前
记一次多JDK版本问题的排查,一坑套一坑,差点没爬上来
java