最近一直在跟着大佬的源码解析在看spring boot 源码,在啃的时候,光看倒是没啥感觉,所以就跟着一起动手执行,观看不做傻把式,竟然第一次搭建spring boot 源码的环境就错误百出,执行千里,始于足下,还是老老实实找问题,解决。下面是碰到的一些坑和解决办法。经供参考。
- 环境准备
1、安装maven 3.5或者以上版本。
2、安装JDK 8或者以上,如果是最下载的是最新的版本2.3.0 ,建议安装jdk 11,因为我后期碰到一些问题,升级了jdk 就ok了.。
3、源码fork到自己的库 link 这一步fork 方便自己存档,修改自便,当然如果你觉得不需要,可以忽略。 - 4、git clone 到本地导入IDEA(笔者ide是idea,其他ide 同样,不浪费时间说这个)
git clone https://github.com/spring-projects/spring-boot.git
- 由于Spring Boot的发布版本代码都在tag上,所以需要使用git tag命令查看所有的tag]
git tag
- 然后切换到名为v2.0.0.RELEASE的tag上:
git checkout -b v2.0.0.RELEASE v2.0.0.RELEASE
- 这样,代码就被保存到本地分支v2.0.0.RELEASE上了,可以随意操作
5、开始进行源码编译工作
源码视图
- 修改最外层pom.xml文件
<disable.checks>true</disable.checks>
- 接着切换到spring-boot根目录下,开始进行编译,变过执行过程又两种方式,我这里使用的Maven版本是apache-maven-3.5.4
- 方式一 : 使用mvn clean install 编译项目
mvn -Dmaven.test.skip=true clean install
-Dmaven.test.skip=true 在打包过程中会忽略testcase,不然编译过程漫长,而且可能会发生一些异常,初次编译的目的削减掉这一步,如果正常编译通过,后面可以对那测试案例做测试。
- 方式二 : 使用 mvnwrapper 编译项目
- 1
mvn -N io.takari:maven:wrapper
- 2 (window)
mvnw clean install -DskipTests -Pfast
我的编译结果
我再执行编译的过程中也出现了几个低级错误,其中也碰到了
然后参一些博客的解决办法
删除掉后重新来一遍
mvn -Dmaven.test.failure.ignore=true -Dmaven.test.skip=true clean install
也就成功了,后来急于测试源码,也就没去看具体的原因。主要是这个gradle plugin对我要做的学习不重要,所以没关心。哈哈
6、进行测试
- 选取项目里的一个单元测试运行一下,走起,发现运行成功了。
- 自己创建子模块项目引入编译的源码进行调试,
在spring-boot/spring-boot-project目录下创建一个Spring Boot项目测试一下自己编译的源码是否可以正常运行
子模块项目就创建一个简单的spring boot demo,按照自己平时创建springboot demo案例就行。
做个简单的请求案例,我的如下:
运行
测试结果
正常结束。
- 总结
再调试过程中出现了好几次失败,一些奇怪的问题也出现了,就是已经编译好了,运行案例的时候老是提示找不到类,或者不存在。我自己去找到对应的编译的文件都存在,因为项目比较巨大,没有找到根本原因,后来把jdk 升级到11 后,重新编译了一遍。就ok了。反正最后也成功了。:)