前言
推薦大家去看Spring官方網站:https://spring.io,Spring家族都在這裏哦。
操作系統
MacOs Catalina 10.15.3
環境準備
- Java JDK 1.8 版本
- Maven 至少是v3.5版本以上,請勿使用v3.6版本,否則可能會出現不兼容的問題,點擊 下載 可以下載其他本,另需配置maven鏡像倉庫,選擇阿里雲的鏡像即可
- IntelliJ IDEA
源碼下載
源碼倉庫在:官方倉庫,可以看到springboot有1.x版本和2.x版本,目前我的當前版本是v2.1.0.M1版本,可以直接點擊下載:https://github.com/spring-projects/spring-boot/archive/v2.1.0.M1.zip,或者通過git clone
命令將源碼下載至本地:# git clone https://github.com/spring-projects/spring-boot.git
編譯
下載解壓後,開始準備編譯前步驟,首先檢查環境是否準確,檢查步驟如下:
- 檢查Java環境:
# java -version
出現版本號則正常,版本至少1.8。 - 檢查maven環境
# mvn -v
出現版本號則正常,檢查你的maven版本是不是至少v3.5版本,另附maven3各個版本的下載地址:http://archive.apache.org/dist/maven/maven-3/ - 檢查你的終端訪問磁盤權限是否已打開(注意我的是mac系統,如果你的不是此係統請忽略此步驟),進入
設置-安全與隱私-隱私
,如下圖:沒有勾上的請勾上,不然執行maven 命令會提示沒有訪問磁盤權限
檢查通過後,打開終端進入源碼根目錄,執行以下命令,等待編譯完成:
# mvn clean install -DskipTests -Pfast
-DskipTests -Pfast
表示跳過測試用例
當出現下圖的情況就是編譯成功了:
源碼導入 IntelliJ IDEA
首先我們看一下源碼目錄:
其中spring-boot-project
模塊就是核心代碼,而spring-boot-samples
模塊就是官方提供的Demo,spring-boot-samples-invoker
模塊你可以理解爲插件,它是用來構建spring-boot-samples
模塊的,spring-boot-tests
就是一些測試代碼。接下來我們以maven形式導入進IntelliJ IDEA,首先我們修改一下在源碼根目錄下的pom文件,在properties標籤里加上<disable.checks>true</disable.checks>
,避免編譯報錯,如下圖:
然後我們打開spring-boot-samples-invoker
模塊下的pom文件,在properties標籤里加上<skipTests>true</skipTests>
,同樣避免編譯報錯,如下圖:
打開Idea,選擇導入:
選擇源碼代碼根目錄
選擇maven
其他配置都是默認,等待導入完成!!!
導入完成後出現的問題
1、maven版本過高
如果你的maven版本是v3.6版本以上,建議換成v3.5版本,否則會出現不兼容的問題出現如下錯誤:
報錯內容如下:
如果你出現這種情況,建議降低版本,比如我的maven版本是v3.5.3,maven其他版本下載地址:http://archive.apache.org/dist/maven/maven-3/。下載完成後,重新配置一下maven環境變量切換到v3.5版本,在終端修改# vi ~/.bash_profile
,將maven配置的路徑換成你下載的當前版本即可,修改完成後記得# source ~/.bash_profile
, 輸入命令# mvn -v
查看是否切換成功。除此之外,你還需要修改idea的maven依賴的環境版本,在idea打開Preferences > Build, Execution, Deployment > Build Tools > Maven
,將maven home改成你當前的v3.5版本,如下圖:
重新在源碼根目錄執行以下命令:
# mvn clean install -DskipTests -Pfast
又是一場漫長的等待。。。。
2、maven配置內存過低
編譯完成後,發現項目不能啓動,maven報紅,pom文件提示錯誤,pom.xml文件的project標籤上提示如下圖所示的效果:
具體內容是:
java.lang.OutOfMemoryError:GC overhead limit exceeded
該問題是IDEA裏爲Maven的importer設置的JVM最大堆內存(-Xmx)過小而導致的.
可以參考的解決方案:https://blog.csdn.net/w605283073/article/details/85107497
導入Demo
首先我們展開spring-boot-samples
模塊可以看到,官方提供了很多Demo,但我們大部分是用不到的,我們只需要一個demo作爲解析源碼即可,於是打開spring-boot-samples
的根目錄下pom文件,註釋掉modules標籤下的Demo只保留spring-boot-sample-simple
即可,如下圖:
然後在最外層根目錄下的pom文件裏的modules標籤下引入spring-boot-samples模塊,如下圖:
等待編譯完成!!!
啓動測試
打開spring-boot-samples
–>spring-boot-sample-simple
–>SampleSimpleApplication.java
文件,運行main
函數,等待啓動成功,這樣我們整個搭建就算完成了。