搭建本地 Spring Framework 源码环境并成功编译

在研究 Spring 源码的过程中,直接从 GitHub 下载源码后想要编译通过,常常会遇到各种构建失败或插件依赖问题。本文记录了我在编译 Spring Framework 5.3.37 时,所做的关键修改和配置,帮助你快速开启调试与源码阅读之路。

对应的视频讲解:动手构建 Spring Framework:本地源码编译详解_哔哩哔哩_bilibili


一、获取源码

你可以通过官网进入 GitHub 仓库:

克隆源码仓库:

git clone https://github.com/spring-projects/spring-framework.git
cd spring-framework
git checkout v5.3.37

二、调整 Gradle 构建配置

Spring 的构建配置中包含了许多检查与发布逻辑,如果只是为了本地编译、调试,可以精简这些配置。

1. 修改 CompilerConventionsPlugin

路径:buildSrc/src/main/java/org/springframework/build/compile/CompilerConventionsPlugin.java

  • 第 54 行,去除 -Werror 配置(用于强制编译警告为错误)。

2. 修改 spring-beans.gradle

  • 删除第 25-27 行中关于 Werror 的相关配置。

3. 修改 spring-aspects.gradle

  • 删除第 34-37 行中的 eclipse.project 配置。

4. 修改根目录的 build.gradle

删除以下内容:

  • 插件声明部分:

    3行 io.spring.nohttp
    5行 org.jetbrains.dokka
    8-9行 org.asciidoctor.jvm.convert  org.asciidoctor.jvm.pdf
    11行 com.github.ben-manes.versions
    13 行 de.undercouch.download
    
  • 检查工具相关配置:

    310行 checkstyle
    312-345行 两个apply、pluginManager.withPlugin("kotlin")、test、checkstyle等
    365行 spring-javaformat-checkstyle
    368-400行 ext.javadocLinks
    411-443行 4个apply、nohttp、tasks.named、publishing
    

5. 修改 spring-module.gradle

  • 删除第 7-53 行、61-102 行的插件与项目声明等内容。

6. 添加 gradle.properties

在项目根目录下创建或编辑 gradle.properties 文件,添加以下配置,用于关闭警告并兼容 JDK tools.jar:

org.gradle.warning.mode=none
tools.jar=${java.home}/../lib/tools.jar

三、添加 demo-debug 模块用于调试

你可以单独创建一个模块,便于打断点调试和学习框架内部逻辑。

1. 修改gradle文件名称为 demo-debug.gradle

然后使用下面内容替换之前的配置

dependencies {
    api(project(":spring-core"))
    optional(project(":spring-aop"))
    optional(project(":spring-beans"))
    optional(project(":spring-context"))

    testImplementation platform('org.junit:junit-bom:5.9.1')
    testImplementation 'org.junit.jupiter:junit-jupiter'
}

2. 中注册模块

build.gradle文件 18行 添加 || it.name == "demo-debug"

moduleProjects = subprojects.findAll { it.name.startsWith("spring-") || it.name == "demo-debug"}

settings.gradle文件中,将 include 'demo-debug' 的位置上移,从最后一行移动至38行

settings.gradle文件include 'demo-debug'是IDEA自动生成的,如果没有生成,也可以手动添加


四、解决 Gradle 中文乱码

如果你在编译日志或测试输出中看到中文乱码,可以通过以下方式解决:

IDEA 设置 VM Options

进入菜单:Help → Edit Custom VM Options,添加如下内容:

-Dfile.encoding=UTF-8

然后重启 IDE 即可。


五、小结

通过以上调整,我们可以让 Spring Framework 在本地以最简配置编译通过,避免不必要的插件干扰,提升源码学习效率。

该方法适合用于:

  • 源码调试与学习
  • 编写简单的验证用例
  • IDE 打断点排查 Spring 行为逻辑

希望本文能帮你更轻松地打开 Spring 源码的大门。

posted @ 2025-06-18 21:14  renchao05  阅读(341)  评论(0)    收藏  举报