Spring5的源碼構建之旅
最近在看 spring源碼深度解析第二版
,需要先構建 Spring 的源碼,於是開始自己的構建之旅,在公司構建是一帆風順,可是不知道爲什麼回家後,構建起來就是各種辛酸,查了很多資料,很多都不是很全面,所以自己寫一篇筆記方便大家和自己以後遇到相同問題有地可尋,二話不說,先來說說構建的事吧
環境準備
Gradle
反正我用的最新版應該是 3.0 之後的都沒問題,網上教程很多,也很簡單,就不贅述了
Jdk
1.8版本及以上,應該是標配了吧
下載源碼並導入IDEA
我是先到 Spring官網 頁面,然後點擊 SpringFramework 進入Spring 的主頁,然後點擊 github 的圖標進入源碼的地址,避免找錯,然後 fork 或者 clone 隨自己心意,然後使用 IDEA 導入 spring 項目,此時會,然後設置好 gradle 爲本地的版本,下載版本是 5.1.x
spring-core 模塊的報錯
Error:(20, 50) java: 程序包org.springframework.objenesis.instantiator不存在
Error:(21, 46) java: 程序包org.springframework.objenesis.strategy不存在
Error:(22, 46) java: 程序包org.springframework.objenesis.strategy不存在
...
這樣的報錯,原因貌似是因爲源碼打包的問題
解決辦法
用命令行到達 spring-core 文件夾下,然後執行下面兩個命令
gradle objenesisRepackJar
gradle cglibRepackJar
spring-aspect 模塊報錯
因爲其中有些類使用了 aspect
關鍵字,但是 javac 編譯器不能識別
解決辦法
安裝 AspectJ 工具
相關鏈接是 eclipse 的鏈接,下載網址,下載完成後需要安裝,下載超級慢,我在 CSDN 上傳一個,但是不能改金幣數量就很喫癟了,所以大家如果嫌慢可以留言什麼的。雙擊 jar 或者使用 java -jar aspectj-1.9.4.jar
安裝,傻瓜式安裝就不解釋了
配置 IDEA
首先在 Project Structure 中找到 Facets,然後添加 AspectJ 其中加入 spring-aop.main 和 spring-aspect.main,最後在 Setting 中設置 Java complier 中 use complier 選擇 Ajc,Path 要選擇 AspectJ\lib\aspectjtools.jar
並且勾選上 Delegate to Javac,這個選項的作用是讓只編譯 AspectJ 的 Facets 項目,而其他則使用 JDK 代理
spring-oxm 模塊報錯
應該是 spring-core 一樣的問題,看起來是很多
Error:(20, 50) java: 程序包org.springframework.oxm.jaxb.test.FlightType不存在
Error:(21, 46) java: 程序包org.springframework.oxm.jaxb.test.Flights不存在
Error:(22, 46) java: 程序包org.springframework.oxm.jaxb.test.ObjectFactory不存在
...
解決辦法
用命令行到達 spring-oxm 文件夾下,然後執行下面兩個命令
gradle genCastor
gradle genJaxb
總結
以上是我遇到的一些問題,可能是 IDEA 版本高,沒有碰到所說的 Kotlin 版本問題,如果遇到,可以更新 IDEA 的內嵌 Kotlin 的版本解決,希望對大家有幫助