最近學習spring-framework源碼,在配置源碼環境的過程中踩了不少坑,此處將配置過程記錄下來,以便以後再配置的時候可以節省點時間。
本機環境:jdk1.8.0_161, IDEA2019.3.1, Gradle5.6.2, spring-framework-5.1.x, windows10
Gradle
安裝
Spring-framework
使用 Gradle
環境構建,所以在編譯Spring
源碼時需要安裝Gradle
環境,Gradle
和 Maven
的安裝方式類似,都是直接下載壓縮包 -> 解壓 -> 配置環境變量 即可。
- 下載gradle壓縮包
進入官網下載地址:https://gradle.org/releases/ 下載對應版本,此處我下載的是 5.6.2 - 解壓壓縮包
解壓到你自己的目錄下,我的目錄是 D:\work\softSave\gradle-5.6.2 - 配置環境變量
- 配置 GRADLE_HOME = D:\work\softSave\gradle-5.6.2 (自己的解壓目錄);
- 在 PATH 中增加 %GRADLE_HOME%\bin
- 增加 GRADLE_USER_HOME 環境變量,指定自己的gradle下載的jar包放在什麼地方,此處我配置了 D:\work\file\gradle_repo
- 在命令行輸入 gradle -v, 如果出現如下信息則說明安裝配置成功
- 配置本地倉庫
直接安裝的gradle
在進行build的時候某些包等資源會由於網絡被牆的原因下載失敗,所以可以配置gradle的全局倉庫,我配置了阿里雲的倉庫:
在 gradle 解壓目錄的 init.d 目錄下新建 init.gradle文件, 裏面添加如下內容即可
allprojects{
repositories {
def REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public/'
all { ArtifactRepository repo ->
if(repo instanceof MavenArtifactRepository){
def url = repo.url.toString()
if (url.startsWith('https://repo1.maven.org/maven2') || url.startsWith('https://jcenter.bintray.com/')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $REPOSITORY_URL."
remove repo
}
}
}
maven {
url REPOSITORY_URL
}
}
}
下載 Spring-framework
源碼
spring的所有項目都位於github上面,spring-framework 的github鏈接 https://github.com/search?q=org%3Aspring-projects+spring&unscoped_q=spring
- 打開鏈接,選擇如下的項目
- 選擇要下載的源碼版本,並下載或直接使用git clone 到本地
編譯源碼
- 將源碼導入到 IEDA 中,此時只能看代碼,不能通過IDEA 找到直接點擊進入對應的類中,是因爲源碼需要使用gradle 去構建
- 構建源碼:
- spring-core 和 spring-aspect 兩個工程是其他模塊所依賴的,所以需要先構建這兩個工程
a. 先進入到spring-aspect 目錄下,在命令行輸入 gradle build 命令構建,如圖, 如果出現 BUILD SUCCESSFUL 則說明構建成功;
b. 進入 spring-core 目錄,同樣進行a 的操作; - 在spring-framework 目錄下找到 buildSrc 目錄,運行 build.gradle 文件即可編譯源碼。
注:源碼編譯過程中可能出現錯誤,如果是下載資源錯誤,則需要重新配置gradle的倉庫,如果是其他錯誤,則可以嘗試註釋掉相應的行,大部分是test類中的錯誤,用此方法可以解決,編譯通過後即可開森滴各種騷操作看源碼了。