SpringBoot 启动流程(四):编译SpringFramework源码

本文详细指导如何下载并编译Spring Framework 5.0.8的源码,包括配置Gradle环境、处理编译依赖及注意事项,适合理解框架内部运作的开发者

本文基于以下版本验证:

项目版本下载地址
SpringBoot2.0.4releasehttps://github.com/spring-projects/spring-boot
SpringFramework5.0.8.releasehttps://github.com/spring-projects/spring-framework

为什么要编译源码?Spring的源码,注释非常清晰,能够帮助读者理解框架中接口和类的作用,对理解Spring框架非常重要。
由于SpringBoot的源码,采用maven框架,编译比较简单,这里不介绍。重点介绍下SpringFramework源码的编译过程。

一、下载SpringFramework源码

在这里插入图片描述
在这里插入图片描述
如果下载不下来,可以使用我在码云上提交的版本:https://gitee.com/muziye/spring-framework-5.0.8.git

二、编译源码

2.1 打开源码

在这里插入图片描述
发现使用的是gradle4.4.1
在这里插入图片描述

2.2 配置gradle

安装idea一般默认已经安装了gradle。注意版本对应:
在这里插入图片描述
gradle 4.4.1 的执行程序在
C:\Users\Administrator.gradle\wrapper\dists\gradle-4.4.1-bin\46gopw3g8i1v3zqqx4q949t2x\gradle-4.4.1\bin
建系统环境变量
GRADLE_HOME=C:\Users\Administrator.gradle\wrapper\dists\gradle-4.4.1-bin\46gopw3g8i1v3zqqx4q949t2x\gradle-4.4.1
然后在系统环境变量 Path 的最后添加上 ;%GRADLE_HOME%\bin
注意 别漏了符号 ;
具体操作过程 和添加 JAVA_HOME的过程一样
简略过程如下:
win7 电脑 -》计算机 -》右键属性 -》 环境变量 -》 高级系统设置 -》 环境变量 -》新建系统变量:GRADLE_HOME值为C:\Users\Administrator.gradle\wrapper\dists\gradle-4.4.1-bin\46gopw3g8i1v3zqqx4q949t2x\gradle-4.4.1
-》编辑系统变量Path 在最后面 增加;%GRADLE_HOME%\bin
在这里插入图片描述

2.3 验证gradle是否配置成功

在这里插入图片描述

2.4 在intellij idea中设置gradle的版本

在这里插入图片描述

2.5 注释掉spring-beans

打开spring-beans.gradle,注释掉一下代码:

// This module also builds Kotlin code and the compileKotlin task
// naturally depends on compileJava.
// We need to redefine dependencies to break task cycles.
//compileGroovy.dependsOn = compileGroovy.taskDependencies.values - 'compileJava'
//def deps = compileGroovy.taskDependencies.immutableValues + compileGroovy.taskDependencies.mutableValues
//compileGroovy.dependsOn = deps - 'compileJava'
//compileKotlin.dependsOn(compileGroovy)
//compileKotlin.classpath += files(compileGroovy.destinationDir)

2.6 刷新源码工程

在这里插入图片描述
在这里插入图片描述
如果整体编译的话,由于缺少部分引用,源码还会报错。不影响阅读,这里就跳过了。

### 问题分析 当导入 Spring Boot 项目时,如果出现“无效的目标发行版”错误,通常是由于 JDK 版本不匹配引起的。Spring Boot 的不同版本对 JDK 的最低要求有所不同,因此需要确保所使用的 JDK 版本满足项目的依赖需求。 根据已知信息,“无效的目标发行版: 21”的错误提示表明当前的编译器试图使用 Java 21 进行编译,而项目的配置可能并不支持此版本。以下是详细的解决方案。 --- ### 解决方案 #### 1. 修改 `pom.xml` 文件中的 JDK 配置 在 Maven 项目中,可以通过修改 `pom.xml` 文件来指定目标 JDK 版本。例如,如果希望使用 Java 17 编译项目,可以在 `<properties>` 节点中添加以下内容[^1]: ```xml <properties> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> ``` 这样可以确保 Maven 使用 Java 17 作为源码和目标字节码的标准。 --- #### 2. 检查 IDE 中的 JDK 设置 除了修改 `pom.xml` 外,还需要确保开发环境中使用的 JDK 版本与项目的要求一致。具体步骤如下: ##### (1)全局 JDK 设置 进入 IDEA 的设置界面 (`File -> Settings`),导航至 `Build, Execution, Deployment -> Build Tools -> Maven`,并将 `JDK for importer` 设置为所需的 JDK 版本(如 Java 17)[^2]。 ##### (2)项目 SDK 设置 同样在设置界面中,导航至 `Project -> Project SDK`,选择合适的 JDK 版本。如果没有安装所需版本,可以从 Oracle 或 OpenJDK 官方网站下载并安装。 ##### (3)模块 SDK 设置 对于特定模块,也可以单独设置其使用的 JDK 版本。导航至 `Project Structure -> Modules`,选择相应的模块,并在其 `Dependencies` 标签下设置正确的 SDK[^3]。 --- #### 3. 清理并重新构建项目 完成上述更改后,清理旧的构建缓存并重新构建项目以确保所有改动生效。执行以下命令: ```bash mvn clean install ``` 此外,在 IDEA 中右键单击项目根目录,选择 `Invalidate Caches / Restart` 来清除缓存并重启 IDE[^4]。 --- #### 4. 检查本地 Maven 配置 有时,本地 Maven 配置也可能导致问题。打开用户的 `.m2/settings.xml` 文件,确保其中没有强制指定不符合项目需求的 JDK 版本。如果有自定义配置,可以临时移除或备份该文件以排除干扰。 --- ### 示例代码片段 以下是一个完整的 `pom.xml` 配置示例,适用于基于 Java 17 的 Spring Boot 项目: ```xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>demo</artifactId> <version>1.0-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.0.0</version> </parent> <properties> <java.version>17</java.version> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> </properties> <dependencies> <!-- 添加必要的依赖 --> </dependencies> </project> ``` --- ### 总结 通过以上方法,可以有效解决因 JDK 版本不匹配而导致的“无效的目标发行版”问题。需要注意的是,Spring Boot 3.x 默认要求至少使用 Java 17,因此推荐升级到最新稳定版本的 JDK 并同步更新项目配置。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值