開發(fā)環(huán)境
IDEA 2020.2.1 + OpenJDK8U-jdk_x64_windows_hotspot_8u265b01 + gradle-6.5.1-bin.zip
遵循官方指導(dǎo)文檔
git clone 源碼
源碼地址: https://github.com/spring-projects/spring-framework
copy地址燥筷,待會(huì)要用
這里我將放到了 D:\workspace
打開 git bash 帝蒿,執(zhí)行如下命令 git clone https://github.com/spring-projects/spring-framework.git
等一會(huì)即可挖函,如下所示
官方指導(dǎo)手冊(cè)
gradle調(diào)整 [可選]
gradle離線安裝
打開 D:\workspace\spring-framework\gradle\wrapper\gradle-wrapper.properties
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.6-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
gradle會(huì)去 distributionUrl對(duì)應(yīng)的地址下載gradle壓縮包磷仰,如果網(wǎng)絡(luò)不好的話,可以提前現(xiàn)在好一個(gè)離線包
修改 distributionUrl疏叨,如下
distributionUrl=file\:///D\:/Soft/gradle-6.5.1-bin.zip
gradle中央倉庫地址調(diào)整
國內(nèi)環(huán)境的話潘靖,建議調(diào)整一下gradle的中央倉庫。
找到 build.gradle
打開 285行 添加阿里云地址
maven {url 'https://maven.aliyun.com/nexus/content/groups/public/'}
maven {url 'https://maven.aliyun.com/nexus/content/repositories/jcenter'}
執(zhí)行 gradlew.bat
windows環(huán)境下 gradlew.bat 就是我們需要執(zhí)行的腳本
第一次要下載好多依賴蚤蔓,速度取決于你的網(wǎng)速,如果失敗的話糊余,多執(zhí)行幾次秀又,基本都是可以成功的。
導(dǎo)入到IEDA
根據(jù)提示來操作即可
Precompile spring-oxm with ./gradlew :spring-oxm:compileTestJava
Import into IntelliJ (File -> New -> Project from Existing Sources -> Navigate to directory -> Select build.gradle)
When prompted exclude the spring-aspects module (or after the import via File-> Project Structure -> Modules)
Code away
gradlew :spring-oxm:compileTestJava
第一步 gradlew :spring-oxm:compileTestJava
導(dǎo)入到IDEA
選擇你拉取的spring源碼贬芥,方式選擇build.gradle
等待index完成吐辙,需要下載jar包 ,不是很快(我用了好幾次蘸劈,耗時(shí)好幾個(gè)小時(shí))昏苏,如果期間出錯(cuò),多試幾次。
點(diǎn)擊刷新按鈕贤惯,如上所示洼专,基本可以認(rèn)定為構(gòu)建成功。
編譯和 運(yùn)行Testst設(shè)置為 IntelliJ IDEA (建議)
編譯完成后建議 將編譯和 運(yùn)行Testst設(shè)置為 IntelliJ IDEA , 默認(rèn)的Gradle特別慢孵构。
C:/Users/artisan/.gradle/wrapper/dists/gradle-6.5.1-bin/b4shxvjcpfsjxpjuxxiaa7cyh/gradle-6.5.1
這個(gè)地方選OPEN JDK11 會(huì)有問題屁商,請(qǐng)見問題記錄
測(cè)試驗(yàn)證
新建子模塊
選擇 gradle
隨便建立一個(gè)子module的名稱
添加依賴
compile(project(":spring-context"))
[圖片上傳中...(image.png-bbb819-1602556907727-0)]
編寫代碼 加載Bean測(cè)試
package com.artisan;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan("com.artisan")
public class AppConfig {
}
package com.artisan;
import org.springframework.stereotype.Component;
@Component
public class ArtisanService {
}
package com.artisan;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class ArtisanTest {
public static void main(String[] args) {
AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class);
ArtisanService bean = ac.getBean(ArtisanService.class);
System.out.println(bean.getClass().getName());
}
}
運(yùn)行測(cè)試
至此,spring5.1.x的源碼編譯導(dǎo)入idea就算完成了颈墅。
Gradle 下載的依賴包存儲(chǔ)的位置
- Windows系統(tǒng)默認(rèn)下載到:C:\Users(用戶名).gradle\caches\modules-2\files-2.1
- Mac系統(tǒng)默認(rèn)下載到:/Users/(用戶名)/.gradle/caches/modules-2/files-2.1
問題
D:\workspace\spring-framework\spring-core\src\main\java\org\springframework\core\metrics\jfr\FlightRecorderStartupEvent.java:19:15
java: 程序包jdk.jfr不存在
最開始使用的OpenJDK jdk-11.0.8.10-hotspot 更換JDK為 OpenJDK8U-jdk_x64_windows_hotspot_8u265b01
【1】gradle JVM
【2】 項(xiàng)目編譯環(huán)境 的JDK
重新編譯蜡镶,即可解決。