1. 程式人生 > >記一次spring5原始碼完整編譯過程

記一次spring5原始碼完整編譯過程

學習java已有3年之久,spring一直停留在應用階段,兩次面試阿里的經歷讓我深感學習spring原始碼的重要性,廢話不多說,開搞!

1、環境:

jdk1.8+spring5+gradle4.7+eclipse4.6

如果要參考該教程,環境最好一樣(eclipse除外),因為以前編譯過spring3,由於環境問題折騰了好久

2、檢測jdk版本java -version

由於此次編譯的是spring5,jdk版本不能太低

2、下載spring原始碼

下載下來解壓:

3、安裝gradle(一款基於Groovy的構建工具,比maven更簡潔)

選擇4.7版本下載

設定環境變數:

新建使用者變數GRADLE_HOME,值為gradle的安裝目錄,我的安裝目錄如下:

設定環境變數:

檢測gradle是否安裝成功:

出現上圖說明安裝成功

4、將spring工程轉換成eclipse可識別的工程

進入spring的解壓目錄,執行下面命令:

gradle cleanidea eclipse

(網上普遍反應這個步驟會報錯,反正我是一次通過,以前編譯spring3的時候在這裡的確折騰了很久)

此時直接匯入eclipse spring-core工程會報錯缺少jar包:spring-cglib-repack-x.x.x.jar、spring-objenesis-repack-x.x.jar

要在spring的解壓目錄下執行下面這兩個命令:

gradle objenesisRepackJar

gradle cglibRepackJar

5.此時你可以把spring工程匯入到eclipse了

先匯入spring-jcl,不然spring-core會報錯(這些工程之間的依賴關係自己去摸索吧)

6、解決spring-bean工程的程式碼報錯

缺少groovy外掛,

安裝groovy外掛:

在eclipse的 Help -> Install New Software 中,新增groovy的下載連線:

http://dist.springsource.org/snapshot/GRECLIPSE/e4.6/(這裡最後的e4.6代表你eclipse的版本別搞錯了,不然安裝不成功別找我)

這個安裝groovy外掛話說有點坑,開了vpn速度也提不上去,哪位老鐵有好的方法煩請告知一聲哈

7、安裝groovy外掛後會報一個groovy編譯版本的錯誤,spring5用的是2.5的編譯版本,而我們下載的groovy預設是2.6版本,檢視groovy編譯版本方式:windows->perferences->groovy

我已經改好了,注意這裡不要想當然的選下面的Switch to試圖切換編譯版本,本人親測行不通,不過可以用下面的方式:

Help->Install New Software

找到安裝的groovy的外掛(我的已經刪了解除安裝了2.6和2.4版本的了):

原本有2.4、2.5和2.6三個編譯版本,我們把2.4和2.6的給解除安裝了(選中2.4和2.6點選下面的Uninstall按鈕),然後重啟eclipse

8、解決spring-oxm報錯問題(缺少castor和jax)

在spring的解壓目錄下執行下面命令

1.gradle genCastor

2.gradle genJaxb

然後去spring-oxm/build/classes下面看看,如果已生成jar包則應該不會再報錯(記得clean一下)

不過我這裡有些奇怪,執行上面兩條命令後竟然生成的是解壓後的檔案,如果你也一樣的話,還要繼續以下步驟:

在classes目錄下分別執行下面兩條命令(自己打jar包):

jar cvf jaxb.jar jaxb\org

jar cvf castor.jar castor\org

然後回到eclipse,右鍵spring-oxm->build Path:

在Libraries中把原本的castor和jaxb刪除,然後再重新匯入我們手動打的jar包

到此為止,spring5的原始碼匯入算是成功了:

如果按照此教程還有什麼問題可以提出來一起看下