1、前言
工欲善其事,必先利其器,本文主要講的是idea如何導(dǎo)入Spring源碼及編譯運(yùn)行相關(guān)的測(cè)試案例
2、下載Spring源碼
獲取spring源碼的方式多種多樣,這里我們就使用下載壓縮包的方式進(jìn)行下載。具體步驟如下:
在github上找到spring源碼的倉(cāng)庫(kù)
找到對(duì)應(yīng)的你想看的版本分支
點(diǎn)擊code按鈕
點(diǎn)擊
Download ZIP進(jìn)行下載下載完成后進(jìn)行解壓
不過(guò)還是建議大家使用clone的方式下載

3、gradle的下載安裝及配置
3.1、gradle簡(jiǎn)介
gradle是源于Apache Ant和Apache Maven概念的項(xiàng)目自動(dòng)化構(gòu)建開(kāi)源工具,它使用一種基于Groovy的的特定領(lǐng)域語(yǔ)言(DSL)來(lái)聲明項(xiàng)目設(shè)置,拋棄了基于XML的各種繁瑣配置,面向Java應(yīng)用為主。當(dāng)前其支持的語(yǔ)言暫時(shí)有Java、Groovy、Kotlin和Scala。
gradle是一個(gè)基于JVM的構(gòu)建工具,是一款通用靈活的構(gòu)建工具,支持maven, Ivy倉(cāng)庫(kù),支持傳遞性依賴(lài)管理,而不需要遠(yuǎn)程倉(cāng)庫(kù)或者是pom.xml和ivy.xml配置文件,基于Groovy,build腳本使用Groovy編寫(xiě)。
IDEA 2017.3以上版本支持。
3.2、下載
官方地址:https://gradle.org/
下載地址:https://gradle.org/releases/
官方提供了兩種下載方式,binary-only是只下載二進(jìn)制源碼,Complete(完整版)是下載源碼和文檔。如果有閱讀文檔的需求可以下載第二個(gè),沒(méi)有需要的下載Binary-only即可。
這里我選擇的是: gradle-5.6.4的binary-only版本(保持與下載的spring源碼的gradle需求一致 spring-framework-5.2.15.RELEASE\gradle\wrapper\gradle-wrapper.properties文件查看)
3.3、安裝
解壓安裝包到想安裝到的目錄即可。
3.4、配置
3.4.1、配置環(huán)境變量
1)、 新建變量
變量名:GRADLE_HOME
變量值:解壓到的目錄

同時(shí)別忘了在Path里面加上
%GRADLE_HOME%\bin
2)、新建變量
變量名:GRADLE_USER_HOME
變量值:自定義Gradle倉(cāng)庫(kù)目錄或者M(jìn)aven的倉(cāng)庫(kù)目錄

3)、驗(yàn)證
在cmd窗口輸入 gradle -v

3.4.2、配置gradle倉(cāng)庫(kù)源
在Gradle安裝目錄下的 init.d 文件夾下,新建一個(gè) init.gradle 文件,里面填寫(xiě)以下配置。
allprojects {
repositories {
maven { url 'file:///D:/apache/gradle_home'}
mavenLocal()
maven { name "Alibaba" ; url "https://maven.aliyun.com/repository/public" }
maven { name "Bstek" ; url "http://nexus.bsdn.org/content/groups/public/" }
mavenCentral()
}
buildscript {
repositories {
maven { name "Alibaba" ; url 'https://maven.aliyun.com/repository/public' }
maven { name "Bstek" ; url 'http://nexus.bsdn.org/content/groups/public/' }
maven { name "M2" ; url 'https://plugins.gradle.org/m2/' }
}
}
}
repositories中寫(xiě)的是獲取jar包的順序。先是本地的gradle倉(cāng)庫(kù)路徑;接著的mavenLocal() 是獲取Maven本地倉(cāng)庫(kù)的路徑;第三條和第四條是從國(guó)內(nèi)和國(guó)外的網(wǎng)絡(luò)上倉(cāng)庫(kù)獲取;最后的mavenCentral()是從Apache提供的中央倉(cāng)庫(kù)獲取jar 包。
4、配置IDEA中的gradle
在IDEA的File-->Settings...-->Build, Execution, Deployment-->Build Tools-Gradle。
在這里如果你設(shè)置了GRADLE_USER_HOME之后,IDEA就能自動(dòng)識(shí)別了。

5、使用idea導(dǎo)入Spring源碼
在IDEA的File-->New-->Project from Existing Sources...

選擇下載好的Spring源碼目錄,然后點(diǎn)擊OK

點(diǎn)擊"OK"后,選擇Import project from external model-->gradle點(diǎn)擊finish

在編譯的過(guò)程中,需要更改一些gradle的配置

配置好后,耐心等待即可。大約等個(gè)10分鐘左右就能編譯完成了哦。
6、創(chuàng)建測(cè)試module
下面就讓我們?cè)谠创a中創(chuàng)建個(gè)模板測(cè)試吧
選擇項(xiàng)目->右鍵->new module




7、遇到的問(wèn)題及解決方案
Caused by: net.rubygrapefruit.platform.NativeException: Could not start 'git'
原因分析:zip 發(fā)行版主要是用來(lái)共享源代碼,但不一定用于構(gòu)建它。
參考出處:https://github.com/spring-projects/spring-framework/issues/24467

解決方案:使用git clone的方式下載源代碼,或者忽略(不影響項(xiàng)目運(yùn)行)
Kotlin: warnings found and -Werror specified
原因分析:沒(méi)有 spring-cglib-repack 和 spring-objenesis-repack 包
解決方案:

解決方案出處:https://www.cnblogs.com/liuzhihang/p/spring-source-build.html
8、運(yùn)行測(cè)試類(lèi)

恭喜你,接下來(lái)你就可以為所欲為的debug學(xué)習(xí)Spring源碼了。