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

1,390 阅读3分钟

安装包及环境准备

下载 spring-framework 源码

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

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

警告!: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 配置里增加:

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 配置里增加:

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

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

执行如下命令:

./gradlew :spring-oxm:compileTestJava

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

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 插件。

详细参见:www.cnblogs.com/qubo520/p/1…

参考资料

www.cnblogs.com/qubo520/p/1…

www.cnblogs.com/liuyangfirs…

gitee.com/zhong96/spr…

gitee.com/zhong96/spr…

个人博客:woodwhale's blog

博客园:木鲸鱼的博客