Spring5.0原始碼學習系列之部署構建Spring原始碼(一)
Spring框架的jar管理是通過gradle的,所以還是搭建一下gradle環境,Git是用來程式碼管理的
去gradle官網下載:https://services.gradle.org/distributions/
ps : 建議下載4.x版本,6.7版本和SpringFramework5.0不相容,build時候會提示,暫時沒找到方法,所以我換成Gradle4.9版本
下載gradle之後,設定環境變數:新建GRADLE_HOME
Path路徑後面加上%GRADLE_HOME%\bin;
cmd:gradle -v
驗證gradle是否安裝成功:
在%GRADLE_HOME%新建init.gradle檔案,加上設定:使用阿里的倉庫
allprojects{
repositories {
def REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public/'
all { ArtifactRepository repo ->
def url = repo.url.toString()
if ((repo instanceof MavenArtifactRepository) && (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
}
}
}
新增系統變數GRADLE_USER_HOME
指定倉庫位置,ps:名字要固定為GRADLE_USER_HOME
安裝Gradle外掛
安裝好外掛之後,新建一個gradle專案驗證
Setting設定好gradle,如圖:
github連結:https://github.com/spring-projects/spring-framework
安裝好Git環境之後,git clone Spring原始碼
git clone https://github.com/spring-projects/spring-framework.git -b 5.0.x
也可以使用使用者端軟體SmartGit下載Spring原始碼:
下載好SpringFramework原始碼之後,在根目錄裡,找到import-into-idea.md,這是一份說明檔案:
用typora開啟說明檔案:檔案介紹了匯入idea的方法,我們按照官方檔案來操作
- Precompile
spring-oxm
with./gradlew :spring-oxm:compileTestJava
意思是要用gradle編譯spring-oxm專案,注意:在window系統要用gradlew :spring-oxm:compileTestJava
命令,不用加上./
,這個是linux系統的命令
我試過,沒編譯成功,因為spring-oxm專案依賴於spring-bean工程,用官方的編譯太困難了,遇到好幾個問題,所以我就繞過,用idea的auto import自動編譯部署
- Import into IntelliJ (File -> New -> Project from Existing Sources -> Navigate to directory -> Select build.gradle)
步驟2是告訴我們要import專案,不過官方readme說明太簡單,所以本部落格進行比較詳細介紹:
ps:注意勾選auto-import,匯入專案時候就會自動import自動構建專案
.gradle路徑:
- When prompted exclude the
spring-aspects
module (or after the import via File-> Project Structure -> Modules)
這個意思是排除spring-aspects,所以開啟setting.gradle,註釋程式碼如圖:
- Code away
這個就是自己新建專案編碼,略過
編譯過程是比較麻煩的,有問題就要看紀錄檔,網上找找資料
可能遇到的問題:
No such property: values for class: org.gradle.api.internal.tasks.DefaultTaskDependency
Possible solutions: values
只能先註釋程式碼compileGroovy.dependsOn = compileGroovy.taskDependencies.values - "compileJava"
國外的倉庫下載網速可能比較慢,所以要換下阿里的倉庫地址:
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}
選擇Spring-framework->New -> Module
是屬於spring模組的: