1、从GitHub拉取源码
SpringBoot项目地址:https://github.com/spring-projects/spring-boot
注意:
编译spring boot要求:maven 3.5或者以上版本,JDK 8或以上版本
点击Branch选择分支,这里我们选择最新的2.2.X,最后点击右侧clone or download。
这里下载可能有会有点慢,耐心等…
2、修改pom.xml文件
解压后,修改项目根目录的pom.xml文件
在properties标签下添加:
<disable.checks>true</disable.checks>
它是用来配置,是否开启 Maven 代码检查的插件。
这里我们禁用检查。
3、通过maven编译
解压后的工程目录下面有个执行文件: mvnw
通过SpringBoot github 下面的说明我们可以知道
编译源码有两种方式
一种是通过是maven wrapper的 mvnw命令去编译
一种是通过标准的 maven命令 mvn 去编译 ,这种要求maven版本必须3.5.0或者以上版本
关于这两个有什么区别,什么是 maven wrapper?
你可以看下面文章详细了解:
参考来源:http://www.javacoder.cn/?p=759
Maven Wrapper项目的github地址:https://github.com/takari/maven-wrapper
这里我建议使用 maven去编译。你最好升级一下你的maven版本。
执行命令:
mvn clean install -DskipTests
这里需要注意:如果你的setting.xml 没有放到默认的路径下也就是:
/Users/你的用户名/.m2/setting.xml
那么执行上面这个命令的时候,maven就有可能找不到你本地仓库,就会从默认的中央仓库下载依赖,那会非常慢。
一般我们平时使用的setting.xml里面都会配置一些国内的镜像仓库,比如阿里云。也会配置本地的本地仓库。
所以这里执行mvn命令的时候,如果你的setting.xml 没有在默认路径下,你最好指定一下setting的路径
mvn clean install --settings /xxxx/xxx/settings.xml -DskipTests
DskipTests 主要作用是跳过了test打包
正常情况下,执行成功会出现下面截图的样子
然后到你本地仓库去找找看,有没有安装成功,出现一个 2.2.xxxBUILD-SNAPSHOT 的包
这里不是RELEASE版本啊,一定是 BUILD-SNAPSHOT 的编译快照版本。
这样才不会影响我们本地真实开发的时候引用的 Release版本
4、导入IDEA
打开idea,选择 File–> New --> Project form Existing Sources…
选择你的工程目录 spring-boot-2.2.x
到这里,Spring Boot编译就完成
然后就可以新建一个module,进行调试学习了。
5、写个测试module
添加依赖
去掉生成的parent 这里不需要继承,我们直接引用需要的依赖模块
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>spring-boot-study</artifactId>
<groupId>org.springframework.boot</groupId>
<version>${revision}</version>
<properties>
<revision>2.2.6.BUILD-SNAPSHOT</revision>
</properties>
<name>Spring Boot Study</name>
<description>这里是用来学习研究spring boot 源码的工程</description>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>${revision}</version>
</dependency>
</dependencies>
</project>
新建一个class 去测试一下
6、想运行里面的smoke-tests模块
如果你想运行一下里面的冒烟测试模块 smoke-test还不行
你会发现里面的spring-boot-smoke-tests模块是没有被引用的,没有被标识出来。
这是因为,这个模块没有被引用,打开spring-boot-tests 模块的 pom.xml 文件
可以看到 标签下面就没有对 smoke-tests模块进行引用,也没有对 deployment-tests 模块进行引用,注释的意思是说,deployment-tests 太慢了,默认情况下就没有引入。
这里 我们把smoke-tests模块加入就可以了
<module>spring-boot-smoke-tests</module>
完成以后 Reimport 一下maven项目
接下来我们用spring-boot-smoke-test-web-ui模块测试一下
访问 localhost:8080 出现下面画面就表示成功了!
以上是mac版本的编译过程,windows 的思路应该差不多,有需要都可以自己去尝试。