使用idea和gradle編譯spring5源碼的方法步驟
寫在前面:spring 應(yīng)該對于每個從事java開發(fā)的大兄弟們來說應(yīng)該都不陌生的,作為一個從業(yè)兩年多的小開發(fā)仔,個人覺得,每天都在面對spring,確從來沒有編譯過spring源碼,有點(diǎn)不太合適。最近在研究spring源碼的時候,突然想起編譯一下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下載時候有三個包,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)項目即可(先將源碼解壓到idea工作空間中去)
2),導(dǎo)入前先注意下工程下的這幾個文件,為導(dǎo)入eclipse和idea前需要注意的地方
我們點(diǎn)開import-into-idea.md文件
注意幾點(diǎn):
a,因為其他項目需要依賴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)文檔),這里編譯可能會報錯,不影響我們編譯使用,我們先不處理
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)項目構(gòu)建完成之后,便可開始編譯,編譯很簡單,直接在moudle中run test all即可
如果出現(xiàn)依賴報錯,如下執(zhí)行命令,即可下載相應(yīng)jar包
如下執(zhí)行完了后,編譯moudle即可,如此依次編譯spring-oxm,spring-context,spring-bean即可
6,使用剛剛編譯的spring源碼構(gòu)建spring項目,在工程目錄下,新建moudle,引入對應(yīng)的依賴即可
項目構(gòu)建完成,正確輸出。至此,spring5.0.x項目構(gòu)建編譯完成。大功告成!
到此這篇關(guān)于詳解使用idea和gradle編譯spring5源碼的文章就介紹到這了,更多相關(guān)idea和gradle編譯spring5內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 在IDEA里gradle配置和使用的方法步驟
- 解決IDEA Gradle構(gòu)建報錯''Cause: zip END header not found''
- 解決 IDEA 創(chuàng)建 Gradle 項目沒有src目錄問題
- 詳解IDEA下Gradle多模塊(項目)的構(gòu)建
- IDEA配置java開發(fā)環(huán)境(maven、gradle、tomcat)
- IntelliJ IDEA導(dǎo)入Gradle項目的方法
- Gradle的安裝和IDEA集成、項目導(dǎo)入的詳細(xì)教程
- 詳解Gradle安裝并配置到IDEA的方法
- 使用IDEA和Gradle構(gòu)建Vertx項目(圖文步驟)
- idea gradle項目復(fù)制依賴小技巧(推薦)
- IDEA配置Gradle及Gradle安裝的實(shí)現(xiàn)步驟
相關(guān)文章
Spring Boot Admin 動態(tài)修改日志級別的方法步驟
這篇文章主要介紹了Spring Boot Admin 動態(tài)修改日志級別的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08詳解SpringBoot中@PostMapping注解的用法
在SpringBoot中,我們經(jīng)常需要編寫RESTful Web服務(wù),以便于客戶端與服務(wù)器之間的通信,@PostMapping注解可以讓我們更方便地編寫POST請求處理方法,在本文中,我們將介紹@PostMapping注解的作用、原理,以及如何在SpringBoot應(yīng)用程序中使用它2023-06-06解決Spring Batch框架job任務(wù)只跑一次的問題
這篇文章主要介紹了解決Spring Batch框架job任務(wù)只跑一次的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09如何通過RabbitMq實(shí)現(xiàn)動態(tài)定時任務(wù)詳解
工作中經(jīng)常會有定時任務(wù)的需求,常見的做法可以使用Timer、Quartz、Hangfire等組件,這次想嘗試下新的思路,使用RabbitMQ死信隊列的機(jī)制來實(shí)現(xiàn)定時任務(wù),下面這篇文章主要給大家介紹了關(guān)于如何通過RabbitMq實(shí)現(xiàn)動態(tài)定時任務(wù)的相關(guān)資料,需要的朋友可以參考下2022-01-01Java中的instanceof關(guān)鍵字在Android中的用法實(shí)例詳解
instanceof是Java的一個二元操作符,和==,>,<是同一類東西。接下來通過本文給大家介紹Java中的instanceof關(guān)鍵字在Android中的用法,非常不錯,具有參考借鑒價值,感興趣的朋友一起學(xué)習(xí)吧2016-07-07Java的web開發(fā)中SSH框架的協(xié)作處理應(yīng)用筆記
這篇文章主要介紹了Java的web開發(fā)中SSH框架的協(xié)作處理應(yīng)用筆記,SSH是指Struts和Spring以及Hibernate的框架搭配,需要的朋友可以參考下2015-12-12SpringBoot+OCR?實(shí)現(xiàn)圖片文字識別
本文主要介紹了SpringBoot+OCR 實(shí)現(xiàn)圖片文字識別,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-12-12Spring?Boot?整合RocketMq實(shí)現(xiàn)消息過濾功能
這篇文章主要介紹了Spring?Boot?整合RocketMq實(shí)現(xiàn)消息過濾,本文講解了RocketMQ實(shí)現(xiàn)消息過濾,針對不同的業(yè)務(wù)場景選擇合適的方案即可,需要的朋友可以參考下2022-06-06