前提

前几天面试的时候,被问过 Spring Boot 的自动配置源码怎么实现的,没看过源码的我只能投降��了。

这不,赶紧来补补了,所以才有了这篇文章的出现,Spring Boot 2. 0 源码阅读环境的搭建中还遇到点问题,被坑死了,还好解决了,感谢群里的小伙伴!

关注我

转载请务必注明原创地址为:http://www.54tianzhisheng.cn/2018/04/15/springboot2_code/

项目下载

从 https://github.com/spring-projects/spring-boot/releases 可以看到所有版本的下载地址,我这里选择的是 Spring Boot 2 中最新的 v2.0.1.RELEASE 版本,下载后,然后解压。获取代码之前,请先确保你的 JDK 版本是 1.8 以上哦。

项目编译

进入 spring-boot-2.0.1.RELEASE 的目录下,执行下面的命令。

跳过测试用例编译

sudo mvn clean install -DskipTests -Pfast //跳过测试用例

跳过测试用例可以加快编译的速度。

先看下运行成功的效果:

只花了 6 分多钟就好了。

全量编译

sudo mvn -f spring-boot-project -Pfull clean install

全量编译竟然报错,一波未平,一波又起!

看网上的解决方法是:在项目的 pom.xml 文件中的 <properties> 添加 <javadocExecutable>

<properties><javadocExecutable>${java.home}/../bin/javadoc</javadocExecutable>
</properties>

此方法虽然管用,但是只是临时的,需要对每个项目都进行添加。

问题产生的原因应该是,mvn 拿到的 JAVA_HOME 位置应该是 ${JAVA_HOME}/jre 而不是 jdk 位置。

后面又看官方的 README 上面写的执行命令:

sudo mvn clean install

执行后也是有各种报错,尝试了很久解决,最后花了好几个小时才到下面这图:

太折腾人了,太麻烦了!

暂时就不全量编译了,我们就直接把现在 跳过测试用例编译 后的项目导入到 IDEA 中去。

导入项目工程

导入后将那些测试的 module 标记为 maven 项目,然后后面自己再根据测试用例去跟源码吧。

导入后项目没出现报错,美滋滋,后面源码可以看起来。

遇到的坑

在这之前,我自己创建项目 Spring Boot 2 项目都是失败的,maven 运行项目(mvn clean install)报错如下:

通过上图可以发现报错的罪魁祸首是由于找不到 org.yaml.snakeyaml 1.19 的包,这个依赖死活下不下来,苦逼了��。

一开始以为是公司配的 maven setting.xml 文件有问题(公司私服有问题),导致我这个 org.yaml.snakeyaml 1.19 的包一直下载不来。后来我叫群里的好友帮忙测试下能不能创建 Spring Boot 2 项目,结果他们都行的。我就换成了他们阿里云镜像的 setting 文件,结果在我这还是不行的。真是醉了,我干脆直接叫他把 maven 本地仓库中的 org.yaml.snakeyaml 1.19 整个包都发给我,结果再次创建 Spring Boot 2 项目就能成功了。美滋滋��!

然后就蹭着现在环境 OK,开始搭建我的 Spring Boot 2 源码阅读环境!

相关文章

1、Spring Boot 2.0系列文章(一):Spring Boot 2.0 迁移指南

2、Spring Boot 2.0系列文章(二):Spring Boot 2.0 新特性详解

3、Spring Boot 2.0系列文章(三):Spring Boot 2.0 配置改变

4、Spring Boot 2.0系列文章(四):Spring Boot 2.0 源码阅读环境搭建

最后

源码不骗人,多看看!

Spring Boot 2.0系列文章(四):Spring Boot 2.0 源码阅读环境搭建相关推荐

  1. Spring源码:Spring源码阅读环境搭建

    本篇内容包括:Mac 环境下 gradle 的安装和配置.源码克隆.新建测试类,测试Spring源码 等内容! 第一步:Mac 环境下 gradle 的安装和配置 1.下载安装包 # 到 GitHub ...

  2. 一步步实现windows版ijkplayer系列文章之二——Ijkplayer播放器源码分析之音视频输出——视频篇...

    一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...

  3. spring 源码 找不到 taskprovider_Spring 源码阅读环境的搭建

    " 前言 本文记录了 Spring 源码环境的搭建方式,以及踩过的那些坑!​当前版本:5.3.2-SNAPSHOT. 环境准备 Git JDK master 分支需要 JDK 11 5.2. ...

  4. spring源码解析--环境搭建

    一.安装github 下载地址http://github-windows.s3.amazonaws.com/GitHubSetup.exe,完成后安装会出现gitshell和github 二.下载sp ...

  5. Java之美[从菜鸟到高手演变]之Spring源码学习 - 环境搭建

    准备工作 1.下载安装STS(Spring Tool Suite),在eclipse market里直接搜索.下载.安装. 2.下载安装gradle, Spring源码使用gradle构建,下载后解压 ...

  6. 手撸Spring系列2:IOC/DI 思想(源码篇-IOC)

    说在前头: 笔者本人为大三在读学生,书写文章的目的是为了对自己掌握的知识和技术进行一定的记录,同时乐于与大家一起分享,因本人资历尚浅,发布的文章难免存在一些错漏之处,还请阅读此文章的大牛们见谅与斧正. ...

  7. Spring源码阅读 源码环境搭建(一)

    ring 源码阅读的搭建(一) 一 下载spring源码 进入官方网页:https://spring.io/projects/spring-framework 进入相关的github位置,下载zip包 ...

  8. C# 强化系列文章四:匿名方法的使用

    C#强化系列文章四:匿名方法的使用 匿名方法 相信很多人都听过,它是C#2.0的一个新特性,顾名思义,匿名方法就是没有名称的方法.那么在C#中的匿名方法有哪些好处,在C#中如何使用呢? 匿名方法最明显 ...

  9. 【java毕业设计】基于Spring Boot+mysql的酒店管理系统设计与实现(程序源码+毕业论文)-酒店管理系统

    基于Spring Boot+mysql的酒店管理系统设计与实现(程序源码+毕业论文) 大家好,今天给大家介绍基于Spring Boot+mysql的酒店管理系统设计与实现,本论文只截取部分文章重点,文 ...

最新文章

  1. Zookeeper分布式一致性原理(一):分布式架构
  2. 转换时间格式24小时_国内(上海)原油期货交易的具体时间段?是24小时交易吗?...
  3. 求高光谱图像相关系数矩阵
  4. Docker swarm 笔记
  5. 雷赛运动控制卡能不能用c语言_基于PMAC控制卡的三坐标测量机控制系统
  6. 序列推荐系统文献调研(1)
  7. 9 QM配置-检验计划配置-维护检验类型
  8. ADO.NET基本运用随笔
  9. 备忘录怎么用红笔标注_备忘录丢失怎么找回来?教你轻松玩转备忘录
  10. leetcode刷题:合并两个有序链表
  11. android.app.instrumentation解析
  12. async和await用法
  13. Delphi如何调用C++写的DLL
  14. qt自定义QtWidgets
  15. html5新增graph,Qunee for HTML5 - 中文 : Graph组件介绍
  16. 使用FreeHttp强制登出微信公众号登陆状态(实现~原理)
  17. linux pam 解锁_Linux多次登录失败用户被锁定使用Pam_Tally2解锁
  18. 六西格玛黑带是什么?取得黑带认证有何意义?
  19. Java-学校项目3---类与对象
  20. coco人体姿态估计标注软件

热门文章

  1. 改造.NET遗留应用
  2. 手把手教你看懂自然语言处理-NLP(4个典型应用+5个难点+6个实现步骤)
  3. CFS菲律宾大使馆认证
  4. Xshell 6 提示 “要继续使用此程序,您必须应用最新的更新或使用新版本
  5. 童丽-《雪梅思君》专辑-[320K/MP3]-[FS2][古典暗红]
  6. 下一代Windows系统,Win11要来了?
  7. p4168 蒲公英(离散化+分块+前缀和)
  8. java的synthetic_Java中的synthetic
  9. vue3 antd table表格样式修改——ant design vue table表格的行高调整
  10. 【IoT】加密与安全:CC254x 低功耗蓝牙 BLE 之 AES-128 加密算法