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 中操作)
- 克隆项目
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 工程报的错误了。
啥,居然和很久以前破解工具有关系,然后我去环境变量一看,果然带了中文,好的,卸载idea,然后重写破解,把破解工具移动到没有中文的路径就解决了。
gradle版本不支持
解决完路径问题后,接着构建结果又报错了
Only Project and Settings build scripts can contain plugins {} blocks
这里报错的文件是setting.gradle,具体是如下
他的意思就是这个不能包含 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选手从来没遇到过啊,点击这个链接后进去一看
居然要登入,好吧。但是我又懒得去登入注册啥的,网上找了一下问题后发现原来换源就好了(本人科学上网还以为不会有啥问题)。那就去换源吧(下面就是换完后)
到这里其实也差不多了,但中间还发生了一些问题。
idea自动下载gradle失败
当你创建一个gradle项目时,idea 在gradle的初始设置是
关注这里
然后idea会自动下载最新的gradle 版本,但是看控制台会发现它根本下载不下来,甚至还会下载两次,以及各种不同版本。所以建议gradle直接去官网下载然后选择本地配置