Spring 源码(spring-5.2.9.RELEASE)编译及 IDEA 环境搭建

安装包及环境准备

下载 spring-framework 源码

spring-framework 源码仓库在 github 平台维护,读者可以自行搜索如何将 github 仓库源码克隆至 gitee 平台。

笔者已经克隆一版,偷懒的读者可以直接拉取:https://gitee.com/woodwhales/spring-framework.git

警告!:spring-framework 源码存放的文件目录,一定不要含有特殊字符、汉字、空格等,以免编译失败。

使用 git 命令或者 source tree 工具等切换代码分支的 tag 为:5.2.9.RELEASE

切换成功之后,在项目根目录中的gradle.properties文件中显示了 5.2.9 版本:

gradle 下载与安装

移步至笔者的博文:构建工具maven及gradle的安装及IDE配置

gadle 编译配置

步骤一:build.gradle

在项目根目中找到build.gradle文件,在大约 280 行处的 repositories 配置里增加:

1
2
maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter'}

步骤二:settings.gradle

在项目根目中找到settings.gradle文件,在第 2 行处的 pluginManagement 配置里增加:

1
2
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
maven { url "https://maven.aliyun.com/repository/public" }

步骤三:gradle.properties

修改gradle.properties文件,设置org.gradle.jvmargs参数值为:-Xmx2048M

1
2
3
4
5
6
7
8
9
10
11
version=5.2.9.RELEASE
## 设置此参数主要是编译下载包会占用大量的内存,可能会内存溢出
org.gradle.jvmargs=-Xmx2048M
## 开启 Gradle 缓存
org.gradle.caching=true
## 开启并行编译
org.gradle.parallel=true
## 启用新的孵化模式
org.gradle.configureondemand=true
## 开启守护进程 通过开启守护进程,下一次构建的时候,将会连接这个守护进程进行构建,而不是重新fork一个gradle构建进程
org.gradle.daemon=true

IDEA 环境编译

在项目根目录下,右键选择:Git Bash Here,打开 Git Bash 窗口。

笔者安装了 git 工具,读者也可打开 windows terminal 程序或者 cmd 程序,执行命令为:

gradlew :spring-oxm:compileTestJava

执行如下命令:

1
./gradlew :spring-oxm:compileTestJava

命令,当出现如下字样时:

1
2
Downloading https://services.gradle.org/distributions/gradle-6.6.1-bin.zip
..

按 ctrl + c 停止该下载任务,将 gradle 包地址在浏览器中输入,浏览器会自动下载 gradle 包。

将下载好的 gradle 包放到:%GRADLE_USER_HOME%\wrapper\dists\gradle-6.6.1-bin\du4tvj86lhti6iga1v8h7pckb 文件夹目录下。在这个文件夹里有:上述下载任务时创建的,进入该目录下,将里面的未下载完成文件删除。

GRADLE_USER_HOME 是在系统的环境变量里配置的,笔者配置的值就是maven本地仓库的根目录。

再次执行./gradlew :spring-oxm:compileTestJavaa命令编译源码。

编译成功之后,使用 IDEA 导入项目即可。

常见错误

文件目录问题

如果读者按照上述步骤严格执行,一般不会出现编译失败问题。如果出现如下错误,很可能由于 spring 源码所在目录有问题。

笔者在两台电脑中执行了上述相同操作,一个成功,一个失败。让笔者郁闷很久,笔者一度怀疑编译失败的电脑操作系统出现了问题,特此重装了系统,结果还是编译失败。细细琢磨之后严重怀疑是源码存放目录的问题,果不其然,因此笔者在上述 “下载 spring-framework 源码” 章节里重点标注了警告提醒。

AnnotationCacheAspect 找不到符号

这是因为 AnnotationCacheAspect.aj 不是java文件需要另外的aspectj进行处理,可以按照以下步骤解决这个问题

执行 java -jar aspectj-1.9.5.jar 将 aspectj-1.9.5.jar 安装到本地某个目录。并在 IDEA 中安装 Aspectj weaver 插件。

详细参见:https://www.cnblogs.com/qubo520/p/13264036.html?utm_source=tuicool

参考资料

https://www.cnblogs.com/qubo520/p/13264036.html

https://www.cnblogs.com/liuyangfirst/p/13526619.html

https://gitee.com/zhong96/spring-framework-analysis

https://gitee.com/zhong96/spring-framework-analysis/blob/master/docs/Spring%E6%BA%90%E7%A0%81%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA.md

updated updated 2024-01-05 2024-01-05
本文结束感谢阅读

本文标题:Spring 源码(spring-5.2.9.RELEASE)编译及 IDEA 环境搭建

本文作者:

微信公号:木鲸鱼 | woodwhales

原始链接:https://woodwhales.cn/2020/10/04/075/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

0%