Mac搭建Spring5源码环境

在阅读Spring源码时,我们需要进行本地Debug来看看Spring的启动流程,在搭建Spring本地环境时,遇到许多坑,而且网上很多资料都不是最新的,导致花费了很多时间,下面分享下我的步骤。

本地环境配置

  • MacBook M3
  • Idea 2024.3.5
  • Java8
  • Gradle 5.6.4

1.配置Jdk8环境

  • 下载jdk8

在Java官网下载适用于M芯片的jdk8版本,安装jdk。

  • 配置Java环境变量

终端执行命令:vim ~/.bash_profile,修改文件内容。

Shell 复制代码
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home
export PATH=$PATH:$JAVA_HOME/bin

保存文件,终端执行命令:source ~/.bash_profile使配置生效。

  • 确保Java安装成功 终端执行命令:java -version

如果输出以上内容,Java就安装成功。

2.下载Spring5.2.x源码

在GitHub下载Spring-5.2.x源码,解压到本地,查看源码中gradle/wrapper/gradle-wrapper.properties

可以看到Spring-5.2.x需要配置gradle5.6.4

3.配置Gradle环境

  • 下载Gradle

在Gradle官网下载5.6.4版本gradle-5.6.4-bin.zip,解压到本地。

  • 终端执行命令:vim ~/.bash_profile,修改文件内容。
Shell 复制代码
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home
export GRADLE_HOME=/Users/tyler/software/gradle-5.6.4
export PATH=$PATH:$GRADLE_HOME/bin:$JAVA_HOME/bin

保存文件,终端执行命令:source ~/.bash_profile使配置文件生效。

  • 确保Gradle安装成功

终端执行命令:gradle -v

如果输出以上内容,Gradle就安装成功。

4.配置Spring5.2.x源码Debug环境

  • 修改根目录下setting.gradle配置文件,在repositories配置项中新增阿里云仓库
  • 修改根目录下build.gradle配置文件,在repositories配置项中新增阿里云仓库
  • 预编译spring-oxm

在spring-framework-5.2.x根目标下,终端执行命令: gradle :spring-oxm:compileTestJava。

终端输出以上内容说明编译成功。

  • Idea导入源码

打开Idea, 选择 File -> New -> Project from Existing Sources -> Navigate to directory -> Select build.gradle,导入源码。

  • 新建spring-demo Module

可以新建测试类来调试跟踪Spring启动过程,在Debug时会发现Debug不生效,需要设置Idea Gradle配置。

  • 设置Idea Gradle

5.编译Spring5.2.x源码可能遇到的问题

  • Kotlin: warnings found and -Weeror specified

解决步骤:删除spring-core模块Kotlin -Weeror参数

如果还是不解决问题,在项目根目录下build.gradle配置文件中,找到allWarningsAsErrors,改为false。

  • 找不到符号CoroutinesUtils
Java 复制代码
java: 找不到符号
符号: 变量 CoroutinesUtils
位置: 类 org.springframework.core.ReactiveAdapterRegistry.CoroutinesRegistrar

解决步骤:Idea File->Project Structure->Libraries->点击➕选择Java

选择Kotlin包依赖路径:spring-framework-5.2.x/spring-core/kotlin-coroutines/build/libs/kotlin-coroutines-5.2.26.BUILD-SNAPSHOT.jar

然后选择spring.spring-core.main。

成功之后可以看到Kotlin依赖。

如果还是报错,在Modules中,spring-core依赖中再添加一次,路径还是上面的。

  • Java: 找不到符号 InstrumentationSavingAgent

解决步骤:修改spring-context.gradle,添加compile(project(":spring-instrument"))

  • 找不到类AnnotationTransactionAspect

解决步骤:在GitHub下载适合自己Java版本的aspectj依赖,双击安装,插件市场安装aspectj插件。

Project Settings选择Facets点击➕,选择AspectJ,选择spring.spring-aop.amin和spring.spring-aspects.main。

更改编译器

  • ajc: GroovyDynamicElementReader cannot be resolved to a type

解决步骤:Java Compiler选择Delegate to Javac。

相关推荐
知守观2 小时前
@Transactional 事务失效排查,try-catch 吞异常导致回滚失败(附源码分析)
后端·spring
Bingo_BIG6 天前
Java Spring框架:单表的查询、新增、修改、删除、导入、导出
java·spring·前后端
paopaokaka_luck6 天前
智慧社区综合服务小程序(人脸识别、AI问答、Echarts图形化分析)
前端·javascript·spring boot·spring·数据分析·echarts
牧瀬クリスだ6 天前
YAML配置详解:SpringBoot实战指南
java·spring·yml
需要8266 天前
JVM 内存区域与对象创建:一次 GC 从哪来
java·jvm·spring boot·spring·servlet·tomcat
paopaokaka_luck6 天前
考研政治刷题小程序(AI推荐题目、ECharts数据分析、章节练习与专项训练、模拟考试、错题本与收藏夹、学习打卡与目标管理、题库和组卷维护)
前端·javascript·spring boot·spring·数据分析·echarts
步行cgn6 天前
Spring 基于 XML 的自动装配:byType 详解
java·后端·spring
边境悍匪6 天前
蜗牛学苑 Java 智能体学习 Day46|贯穿项目 2 思维导图复盘
java·开发语言·vue.js·学习·spring
步行cgn6 天前
Spring c 命名空间注入详解
java·后端·spring
需要8266 天前
MySQL 索引 B+ 树与“查询为什么变慢了
java·spring boot·spring·spring cloud·tomcat