spring frameWork源码构建踩坑全记录

765 阅读3分钟

springFrameWork 源码构建踩坑全记录

最近在学习Spring 源码,之前查看的方式一直用的idea自带反编译来查看源码,一开始还没啥问题,知道后面我看到一堆do while 和 iterator 时 我意识到代码开始不对劲了,于是乎想把spring framework的工程项目clone下来阅读学习,接下来我都没有意识到后面的坑有多少。

clone了错误的版本

大家一般使用的SpringBoot 都不太可能是最新的,使用旧的springboot版本就依赖的旧的spring framework 模块的版本,所以你直接执行

git clone git@github.com:spring-projects/spring-framework.git

你会得到一个非常高版本的源码,1.8的jdk版本无法运行,所以你得切换版本,也非常容易(后续的操作是在git bash 中操作)

  1. 克隆项目
git clone git@github.com:spring-projects/spring-framework.git

2. 进入项目

cd spring-framework

3. 查看项目tag(这个打印的补全)

git tag

3. 指定使用版本(我这里的用的5.3.9,实际的看你的Springboot项目所使用的framework模块版本)

git checkout v5.3.9

这样就切换到正确的版本了

到这里都不算什么问题,后面构建项目才是真正的折磨,本人一直使用maven来构建项目,但是springframework 使用的 gradle 构建工具,所以你得去官网下载gradle (地址:Gradle | Releases

然后就是常规的配置环境变量,最后控制台输入 gradle -v 看下能不能正常输出

逆天的idea破解插件

当我准备好开始构建后,控制台突然爆出一个错误,

java.nio.file.InvalidPathException: Illegal char <:> at index 4

这咋回事,于是我立马搜索这个错误,虽然有很多解决方法,但是这个错误的出现情况并不是idea 构建gradle出现的,但是功夫不负有心人人 终于找到一个是gradle 工程报的错误了。

image-20240914154248571.png

啥,居然和很久以前破解工具有关系,然后我去环境变量一看,果然带了中文,好的,卸载idea,然后重写破解,把破解工具移动到没有中文的路径就解决了。

gradle版本不支持

解决完路径问题后,接着构建结果又报错了

Only Project and Settings build scripts can contain plugins {} blocks

这里报错的文件是setting.gradle,具体是如下 image-20240914154641517.png

他的意思就是这个不能包含 plugins,纳尼? 这文件可是源码吗,源码怎么可能出问题,然后我网上去查下,好在这下很快找到了问题,gradle 版本不一致,于是我去找到了适合的gradle版本 也算是解决了吧(最新的8.10.0替换为6.8.2)

原版的依赖仓库把我拒了

接着构建,突然又爆出来错误

> Could not resolve org.ysb33r.gradle:grolifant:0.14.
         > Could not get resource 'https://repo.spring.io/plugins-release/org/ysb33r/gradle/grolifant/0.14/grolifant-0.14.pom'.
            > Could not GET 'https://repo.spring.io/plugins-release/org/ysb33r/gradle/grolifant/0.14/grolifant-0.14.pom'. Received status code 401 from server: 

告诉我拉取这个依赖时给我饭回来了401,这是啥情况?我maven选手从来没遇到过啊,点击这个链接后进去一看

image-20240914155138241.png

居然要登入,好吧。但是我又懒得去登入注册啥的,网上找了一下问题后发现原来换源就好了(本人科学上网还以为不会有啥问题)。那就去换源吧(下面就是换完后)

image-20240914155252991.png

到这里其实也差不多了,但中间还发生了一些问题。

idea自动下载gradle失败

当你创建一个gradle项目时,idea 在gradle的初始设置是

image-20240914155743069.png

关注这里

image-20240914155749200.png 然后idea会自动下载最新的gradle 版本,但是看控制台会发现它根本下载不下来,甚至还会下载两次,以及各种不同版本。所以建议gradle直接去官网下载然后选择本地配置

image-20240914155903960.png