使用idea和gradle編譯spring5源碼的方法步驟
寫在前面:spring 應(yīng)該對(duì)于每個(gè)從事java開發(fā)的大兄弟們來說應(yīng)該都不陌生的,作為一個(gè)從業(yè)兩年多的小開發(fā)仔,個(gè)人覺得,每天都在面對(duì)spring,確從來沒有編譯過spring源碼,有點(diǎn)不太合適。最近在研究spring源碼的時(shí)候,突然想起編譯一下spring源碼,網(wǎng)上應(yīng)該也有很多大神編譯過spring源碼,在這里我把我再編譯過程的遇到的坑,來跟大家分享下。
版本工具: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下載時(shí)候有三個(gè)包,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)的本地倉(cāng)庫(kù),gradle和maven類似,工作時(shí)也需要一個(gè)本地倉(cāng)庫(kù),管理工程jar包,可做如下配置,新增GRADLE_USER_HOME,路徑配置成需要的本地倉(cāng)庫(kù)路徑即可。
3,下載spring5源碼(這里我們直接從全球最大的同性交友平臺(tái)github上下載就可以了),進(jìn)入github官網(wǎng),直接搜索spring
這里可能有很多同志上傳的spring源碼,這里我們直接找官方版本
進(jìn)去之后會(huì)看到一個(gè)master版本,我們,同時(shí)也包含很多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)錯(cuò)誤也不太好排查,回頭可專門寫一個(gè)文介紹下使用gradle命令編譯spring源碼。
這里我們選擇直接通過代碼編輯工具來編譯spring5源碼,可以用eclipse或者idea等等,這里我個(gè)人推薦使用idea編譯。
1)將源碼導(dǎo)入idea,idea怎么導(dǎo)入工程就不一一細(xì)說了,沒使用過idea的大兄弟,可以惡補(bǔ)一下idea使用手冊(cè):file-open選到對(duì)應(yīng)項(xiàng)目即可(先將源碼解壓到idea工作空間中去)
2),導(dǎo)入前先注意下工程下的這幾個(gè)文件,為導(dǎo)入eclipse和idea前需要注意的地方
我們點(diǎn)開import-into-idea.md文件
注意幾點(diǎn):
a,因?yàn)槠渌?xiàng)目需要依賴spring-core和spring-oxm,所以我們導(dǎo)入后需要先編譯這兩個(gè)包
b,spring-aspects需要依賴三方j(luò)ar(精通aop的應(yīng)該知道spring-aop和aspectj的關(guān)系,在使用注解方式實(shí)現(xiàn)spring-aop的時(shí)候,需要導(dǎo)入aspectj的jar,有興趣的可以去查閱下官方文檔aop相關(guān)文檔),這里編譯可能會(huì)報(bào)錯(cuò),不影響我們編譯使用,我們先不處理
c,使用工具編譯時(shí),可能會(huì)出現(xiàn)內(nèi)存溢出情況,這里我們編譯時(shí)需要增加相關(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編譯,均會(huì)出現(xiàn)版本問題,我后來采用的是,jdk1.8_131版本,即可成功
4),編譯過程中會(huì)出現(xiàn)一些錯(cuò)誤,常見如下
a),jdk版本錯(cuò)誤(如前所說,換成對(duì)應(yīng)版本即可)
b),出現(xiàn)如下錯(cuò)誤,點(diǎn)擊open file,將框中內(nèi)容注釋即可
如上做完后,等著build完了即可,全稱需要下載gradle倉(cāng)庫(kù)jar包,需要時(shí)間比較長(zhǎng),拼機(jī)器性能和網(wǎng)速的時(shí)候到了,兄弟們加油。
5,當(dāng)項(xiàng)目構(gòu)建完成之后,便可開始編譯,編譯很簡(jiǎn)單,直接在moudle中run test all即可
如果出現(xiàn)依賴報(bào)錯(cuò),如下執(zhí)行命令,即可下載相應(yīng)jar包
如下執(zhí)行完了后,編譯moudle即可,如此依次編譯spring-oxm,spring-context,spring-bean即可
6,使用剛剛編譯的spring源碼構(gòu)建spring項(xiàng)目,在工程目錄下,新建moudle,引入對(duì)應(yīng)的依賴即可
項(xiàng)目構(gòu)建完成,正確輸出。至此,spring5.0.x項(xiàng)目構(gòu)建編譯完成。大功告成!
到此這篇關(guān)于詳解使用idea和gradle編譯spring5源碼的文章就介紹到這了,更多相關(guān)idea和gradle編譯spring5內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. ASP常用日期格式化函數(shù) FormatDate()2. Python 操作 MySQL數(shù)據(jù)庫(kù)3. Python數(shù)據(jù)相關(guān)系數(shù)矩陣和熱力圖輕松實(shí)現(xiàn)教程4. 開發(fā)效率翻倍的Web API使用技巧5. bootstrap select2 動(dòng)態(tài)從后臺(tái)Ajax動(dòng)態(tài)獲取數(shù)據(jù)的代碼6. CSS3中Transition屬性詳解以及示例分享7. js select支持手動(dòng)輸入功能實(shí)現(xiàn)代碼8. 什么是Python變量作用域9. vue使用moment如何將時(shí)間戳轉(zhuǎn)為標(biāo)準(zhǔn)日期時(shí)間格式10. python 如何在 Matplotlib 中繪制垂直線
