使用idea和gradle編譯spring5源碼

寫在前面:
本篇文章主要基于《spring底源碼分析》視頻教程整理的相關(guān)文檔,
視頻地址:https://www.bilibili.com/video/av56715741/
所有內(nèi)容由魯班學(xué)院VIP學(xué)員撰寫,由于教程視頻中也提到過本篇文章,所以UP主搬運(yùn)過來希望可以幫助大家。
版本工具:spring5.0.x,gradle4,9,jdk1.8_131,kotlin1.2.51,groovy2.4.15,IntelliJ IDEA 2018-2
詳細(xì)步驟及坑見下:
1,下載gradle,可以去官網(wǎng)下載,gradle版本需要4.2以上,小編這里選擇的是gradle4.9版本。
? ? ? gradle下載地址:https://services.gradle.org/distributions/

gradle下載時候有三個包,gradle-src為gralde源碼,gradle-bin為安裝包,gradle-all為源碼加安裝包,我們這里只需下載安裝文件即可。
2,配置gradle
gradle下載后不需要安裝,解壓再本地磁盤后配置環(huán)境變量即可

1),配置gradle環(huán)境變量

新建GRADLE_HOME,path中增加%GRADLE_HOME%/bin;即可
配置完成以后win+r,輸入cmd進(jìn)入dos界面,鍵入命令gradle -v,若如下圖正確輸出版本信息即可

2),配置gradle默認(rèn)的本地倉庫,gradle和maven類似,工作時也需要一個本地倉庫,管理工程jar包,可做如下配置,新增GRADLE_USER_HOME,路徑配置成需要的本地倉庫路徑即可。

3,下載spring5源碼(這里我們直接從全球最大的同性交友平臺github上下載就可以了),進(jìn)入github官網(wǎng),直接搜索spring

這里可能有很多同志上傳的spring源碼,這里我們直接找官方版本

進(jìn)去之后會看到一個master版本,我們,同時也包含很多spring的歷史分支版本,這里我們直接選擇5.0.x版本


我們直接下載zip到本地磁盤即可
源碼下載地址:https://github.com/spring-projects/spring-framework
4,講spring5源碼導(dǎo)入idea進(jìn)行構(gòu)建
? ? ? 編譯spring5源碼有很多方式,可以直接通過gradle命令編譯,不過這種編譯方式比較麻煩,出現(xiàn)錯誤也不太好排查,回頭可專門寫一個文介紹下使用gradle命令編譯spring源碼。
? ? ?這里我們選擇直接通過代碼編輯工具來編譯spring5源碼,可以用eclipse或者idea等等,這里我個人推薦使用idea編譯。
1)將源碼導(dǎo)入idea,idea怎么導(dǎo)入工程就不一一細(xì)說了,沒使用過idea的大兄弟,可以惡補(bǔ)一下idea使用手冊:file-open選到對應(yīng)項(xiàng)目即可(先將源碼解壓到idea工作空間中去)
2),導(dǎo)入前先注意下工程下的這幾個文件,為導(dǎo)入eclipse和idea前需要注意的地方

我們點(diǎn)開import-into-idea.md文件

注意幾點(diǎn):
? ? ?a,因?yàn)槠渌?xiàng)目需要依賴spring-core和spring-oxm,所以我們導(dǎo)入后需要先編譯這兩個包
? ? ?b,spring-aspects需要依賴三方j(luò)ar(精通aop的應(yīng)該知道spring-aop和aspectj的關(guān)系,在使用注解方式實(shí)現(xiàn)spring-aop的時候,需要導(dǎo)入aspectj的jar,有興趣的可以去查閱下官方文檔aop相關(guān)文檔),這里編譯可能會報(bào)錯,不影響我們編譯使用,我們先不處理
? ? c,使用工具編譯時,可能會出現(xiàn)內(nèi)存溢出情況,這里我們編譯時需要增加相關(guān)參數(shù)
? ? ? ? ?-XX:MaxPermSize=2048m -Xmx2048m -XX:MaxHeapSize=2048m
3),以上工作完成之后,我們可以開始導(dǎo)入編輯編譯配置了,如下圖(需要注意的地方已在圖中標(biāo)注)

注意-注意-注意:小編曾經(jīng)猜過的坑,jdk版本,不能太高,我曾經(jīng)使用jdk1.8_20和jdk1.8_191編譯,均會出現(xiàn)版本問題,我后來采用的是,jdk1.8_131版本,即可成功
4),編譯過程中會出現(xiàn)一些錯誤,常見如下
a),jdk版本錯誤(如前所說,換成對應(yīng)版本即可)

b),出現(xiàn)如下錯誤,點(diǎn)擊open file,將框中內(nèi)容注釋即可
如上做完后,等著build完了即可,全稱需要下載gradle倉庫jar包,需要時間比較長,拼機(jī)器性能和網(wǎng)速的時候到了,兄弟們加油。
5,當(dāng)項(xiàng)目構(gòu)建完成之后,便可開始編譯,編譯很簡單,直接在moudle中run test all即可

如果出現(xiàn)依賴報(bào)錯,如下執(zhí)行命令,即可下載相應(yīng)jar包

如下執(zhí)行完了后,編譯moudle即可,如此依次編譯spring-oxm,spring-context,spring-bean即可
6,使用剛剛編譯的spring源碼構(gòu)建spring項(xiàng)目,在工程目錄下,新建moudle,引入對應(yīng)的依賴即可


項(xiàng)目構(gòu)建完成,正確輸出。至此,spring5.0.x項(xiàng)目構(gòu)建編譯完成。大功告成!
希望對大家有所幫助,也希望大家能夠給個關(guān)注+點(diǎn)贊支持!