Spring5源碼 - 構(gòu)建源碼環(huán)境

開發(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特別慢孵构。


image.png
image.png
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)證

新建子模塊

image.png

選擇 gradle


隨便建立一個(gè)子module的名稱

添加依賴

compile(project(":spring-context"))
[圖片上傳中...(image.png-bbb819-1602556907727-0)]

編寫代碼 加載Bean測(cè)試


image.png
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è)試

image.png

至此,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


image.png

【2】 項(xiàng)目編譯環(huán)境 的JDK


image.png
image.png

重新編譯蜡镶,即可解決。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末恤筛,一起剝皮案震驚了整個(gè)濱河市官还,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌毒坛,老刑警劉巖望伦,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異粘驰,居然都是意外死亡屡谐,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門蝌数,熙熙樓的掌柜王于貴愁眉苦臉地迎上來愕掏,“玉大人,你說我怎么就攤上這事顶伞《牛” “怎么了?”我有些...
    開封第一講書人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵唆貌,是天一觀的道長滑潘。 經(jīng)常有香客問我,道長锨咙,這世上最難降的妖魔是什么语卤? 我笑而不...
    開封第一講書人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮酪刀,結(jié)果婚禮上粹舵,老公的妹妹穿的比我還像新娘。我一直安慰自己骂倘,他們只是感情好眼滤,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著历涝,像睡著了一般诅需。 火紅的嫁衣襯著肌膚如雪漾唉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評(píng)論 1 305
  • 那天堰塌,我揣著相機(jī)與錄音赵刑,去河邊找鬼。 笑死蔫仙,一個(gè)胖子當(dāng)著我的面吹牛料睛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播摇邦,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼恤煞,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了施籍?” 一聲冷哼從身側(cè)響起居扒,我...
    開封第一講書人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎丑慎,沒想到半個(gè)月后喜喂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡竿裂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年玉吁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片腻异。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡进副,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出悔常,到底是詐尸還是另有隱情影斑,我是刑警寧澤,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布机打,位于F島的核電站矫户,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏残邀。R本人自食惡果不足惜皆辽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望芥挣。 院中可真熱鬧膳汪,春花似錦、人聲如沸九秀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鼓蜒。三九已至痹换,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間都弹,已是汗流浹背娇豫。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留畅厢,地道東北人冯痢。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像框杜,于是被迫代替她去往敵國和親浦楣。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355