安装包及环境准备
下载 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 | maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' } |
步骤二:settings.gradle
在项目根目中找到settings.gradle
文件,在第 2 行处的 pluginManagement 配置里增加:
1 | maven { url 'https://maven.aliyun.com/repository/gradle-plugin' } |
步骤三:gradle.properties
修改gradle.properties
文件,设置org.gradle.jvmargs
参数值为:-Xmx2048M
1 | version=5.2.9.RELEASE |
IDEA 环境编译
在项目根目录下,右键选择:Git Bash Here,打开 Git Bash 窗口。
笔者安装了 git 工具,读者也可打开 windows terminal 程序或者 cmd 程序,执行命令为:
gradlew :spring-oxm:compileTestJava
执行如下命令:
1 | ./gradlew :spring-oxm:compileTestJava |
命令,当出现如下字样时:
1 | 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进行处理,可以按照以下步骤解决这个问题
- 下载aspectj,对应链接:https://www.eclipse.org/downloads/download.php?file=/tools/aspectj/aspectj-1.9.5.jar
- 安装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