使用eclipse导入spring-framework-5.0.x源码
記錄一下自己編譯Spring-framework-5.0.x的過程
- 1. 準備階段 (環境:jdk1.8+spring5+gradle4.9+eclipse4.11)
- 1.1 jdk1.8
- 1.2 Gradle安裝與配置
- 1.3 AspectJ和Groovy安裝與配置
- 1.4 spring-framework-5.0.x源碼下載
- 2. 開始編譯
- 2.1 運行import-into-eclipse.bat
- 2.2 導入spring源碼到eclipse或者STS
- 3. 生成根目錄
- 4. 導入根項目到eclipse中
- 補充:
- 1. AJDT插件的安裝
說明一下我這里打算用eclipse查看源碼,所以下面的編譯操作后,只是為了往eclipse里面導入,沒有嘗試往idea里面導入。
1. 準備階段 (環境:jdk1.8+spring5+gradle4.9+eclipse4.11)
1.1 jdk1.8
由于此次編譯的是spring-framework-5.0.x,jdk版本最低需要1.8
1.2 Gradle安裝與配置
1. gradle下載地址:https://services.gradle.org/distributions/
截止到目前,gradle最新版本為5.6.1了。gradle下載時候有三個包,gradle-src為gralde源碼,gradle-bin為安裝包,gradle-all為源碼加安裝包,我這里下載的是gradle-all我剛開始直接下載的最新版本的,結果到后面編譯的時候,報錯了,提示有個什么東西1.8,還是什么1.0.2.be什么鬼的版本問題,然后我就換成4.10了,就沒有報那個錯誤了。
gradle下載后不需要安裝,解壓在本地磁盤后配置環境變量即可。
2. 配置環境變量:
新建GRADLE_HOME,path中增加%GRADLE_HOME%/bin;即可。
配置完成以后win+r,輸入cmd進入dos界面,鍵入命令gradle -v,若如下圖正確輸出版本信息即可
這個查看版本的命令是不是跟maven很像??這倆其實功能差不多。
然后配置gradle默認的本地倉庫,可做如下配置,新增GRADLE_USER_HOME,路徑配置成需要的本地倉庫路徑即可,我這里配置為:E:\Gradle\LocalRepository。
1.3 AspectJ和Groovy安裝與配置
AspectJ的安裝讓我折騰了半天,由于我的eclipse是4.11版本的,https://www.eclipse.org/ajdt/downloads/找了一下,最新的版本只有適合eclipse4.10版本的,上面提示說插件適合的版本需要和Eclipse的版本一致才可以生效,然后就試著裝了一下,好像確實沒有生效。當然如果沒有安裝的話,在最后導入項目的時候,會提示缺少這兩個工具,直接在marketPlace里面可以看到Groovy,直接點Install按鈕即可,但是另外的AspectJ Development Tools,這個玩意卻沒有Install按鈕可以點,只有一個learnMore,在折騰半天之后,那我就點learnMore看看吧,進去里面之后竟然有個Install,點了之后貌似就正常安裝了。
1.4 spring-framework-5.0.x源碼下載
這里我們直接從全球最大的同性交友平臺github上下載就可以了,進入github官網,直接搜索spring-projects/spring-framework,第一個就是我們需要的。
進去項目里面,選擇我們需要的版本,我這里下載的是5.0.x,這里我直接下載的源碼的壓縮包。
然后解壓到E:\Spring-Resource\spring-framework-5.0.x
由于我這里已經編譯過了,所以根目錄下會有.setting文件夾。
2. 開始編譯
2.1 運行import-into-eclipse.bat
在嘗試多次編譯失敗之后,偶然在百度上看到,說直接雙擊運行spring-framework-5.0.x文件夾里面的import-into-eclipse.bat,我也只能死馬當成活馬醫了,試一下吧,然后意外的是,沒有報錯!!!!!
彈出如下窗口,開始下載依賴包了,第一次運行了十幾秒之后提示fail并且自動退出了,我又運行一次,就正常了。
過程是漫長的,耐心等待即可。 出現編譯成功的綠條之后,不要著急按任意鍵!
編譯結束之后 我看了一下gradle的本地倉庫文件夾里面,多了將近一個G的新文件,也就是說spring編譯的過程,也就是拼電腦配置和網速的時候了。編譯的時間長短,取決于你的電腦的配置和網速。還有一點就是需要檢查你的gradle的本地倉庫的位置是不是自定義的,因為默認會在C盤比如我的是在C:\Users\linmengmeng\.gradle,到這里我才發現我之前沒有配置本地倉庫,寫博客時就把本地倉庫加在前面環境變量了。
可以看到cmd窗口里面提示到編譯完成之后,下面開始第二步:
2.2 導入spring源碼到eclipse或者STS
直接在eclipse的左側項目空白處右鍵===>Import===>Existing Projects into Workspace,選擇spring源碼解壓的根目錄。
由于我當時沒有安裝groovy和ajnature,這里會有一個提醒安裝的彈窗,這點還是很方便的。這里默認勾選了這兩個插件,直接點Show Solutions。
eclipse卡了一下之后,彈出下面的彈窗,但是只有Groovy的Install按鈕,那就點擊Install安裝就完事了。
然后提示是否重啟eclipse,點擊立即重啟即可。重啟之后就可以看到Project下出現了這么多新的項目
但是這個spring-beans上面有個叉,不用著急,讓eclipse飛一會就好了,等右下角的progress綠條反應完就好了。
如果還有問題,可以 看一下Problem里面的具體信息,我這里是提示groovy的編譯版本跟工作空間的不一致,這個錯誤忘了截圖了,記得就是提示一個是2.4,另一個是2.5,直接右鍵項目名,然后選擇Properties,然后將groovy的編譯的版本改成后面的那個就好了,根據實際情況,你的不一定也是2.5,我晚上回去在我自己電腦上編譯的時候,這個報錯信息就變成需要改為3.0了。
我在我自己電腦上導入項目之后,spring-jdbc項目上面有個感嘆號,然后依賴spring-jdbc的別的模塊也是提示依賴的模塊spring-jdbc中有錯誤。記得Problem里面提示spring-jdbc項目缺少一個jar包,然后我在eclipse里面倒騰了半天,也沒有將那個依賴弄好,最后沒辦法了,就自己手動下載,然后導入到項目里面。
我這里提示的是缺少derby-10.14.2.0.jar,所以我們直接在中央倉庫里面搜這個依賴即可
下載到本地之后,我們需要將其放在gradle的本地倉庫里面,我這里使用的路徑是D:\gradle\local_repository,我們可以看一下gradle的jar包的目錄
然后我們找到缺少的那個jar包的路徑
這里面有倆,我看了一下里面的目錄是有固定套路的,里面是版本號文件夾,版本號文件夾里面還有兩個隨機命名的文件夾,一個文件夾里面放了pom文件,另一個文件夾放了jar文件,我的derby-project文件夾下面只有一個pom文件所在的隨機文件夾,于是我便自己新建了一個文件夾,然后把剛才下載的jar包扔里面
接著在Eclipse里面手動指定jar的位置。
可以看到這里這個jar包的位置就是剛才手動創建的。這是修改之后的,修改之前這個異常的jar信息應該是在jar包列表的最后一行,選中異常的jar,點擊右側的Edit即可手動指定其位置。
然后點擊Apply and Close 給Eclipse一點反應的時間,直到所有的子項目都沒有錯誤信息,就可以開始下一步了。
然后回到cmd窗口,按任意鍵,提示進入第三步
3. 生成根目錄
cmd窗口中提示,第三步,提示的大致意思:
不幸的是,eclipse不允許導入項目層次結構,因此我們不得不在過程中跳過根項目元數據的生成
貌似是提示我們:剛才我們導入的項目,只是一些分離的子項目,我們需要一個父項目。那就按任意鍵,接著往下走,接著編譯
不出意外的話,會順利出現綠條,然后接著第四步。
4. 導入根項目到eclipse中
重復第二步,導入根項目,然后可以看到Eclipse里面新導入一個名為spring的項目,包含了所有第二步導入的子項目,這樣我們就可以在代碼中在多個模塊之間來回切換了。
從第四步的提示中,看到還要最后一步呢,但是當我完成第四步之后回到cmd窗口,敲了回車之后,沒反應,連敲了兩次回車之后,cmd窗口一閃就消失了。。。。。。。
不知道最后一步是什么操作,但是又沒有影響我后面的操作。
但是到目前為止,我們已經順利把源碼導入到eclipse里面了。
這里創建一個簡單的測試,開始我們的第一個demo之旅吧。
其中紅框選中的就是我們自己寫的測試demo了。
首先是新建一個簡單的實體類MyTestBean.java,然后使用xml文件,讓Spring將我們這個類添加到容器中。
然后是xml文件的內容,很簡單,就是使用<bean>標簽,來告訴Spring需要將這個類裝載到容器里面。
beanFactoryTest.xml內容:
最后是我們的測試文件:BeanFactoryTest.java
package my.test.bean;import org.junit.Test; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.core.io.ClassPathResource;import static org.junit.Assert.*;/*** * @author linmengmeng* @since 5.0*/ @SuppressWarnings("deprecation") public class BeanFactoryTest {@Testpublic void testSimpleLoad() {BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("/my/test/bean/beanFactoryTest.xml"));MyTestBean testBean = (MyTestBean) beanFactory.getBean("myTestBean");assertEquals("testStr", testBean.getTestStr());} }右鍵testSimpleLoad方法,Run as 可以看到左側的小綠條,證明我們這個測試通過了。
看到綠條出現的那一刻,真的是舒服,折騰了半天終于弄好了,哈哈。
看似簡單的幾行代碼,Spring究竟做了哪些工作呢?這個就是我們需要了解的了。源碼之旅從今天就開始了,小伙伴們讓我們一起學習吧,后續有機會我會接著分享自己的源碼學習記錄。
最后貼上一份知秋大佬翻譯的Spring源碼的中文文檔,感覺是真的良心之作了,對于我這種英語渣渣來說,中英文對照看,是真的太棒了。
Spring Framework 5.0.0.M3中文文檔
Spring Framework 5.0.0.M3英文文檔 提取碼: xvdy
備用地址: 提取碼: t6mi
Spring Framework 各個版本源碼文檔(英文) 可以下載PDF文檔,比如我需要下載5.0.0.M3版本的文檔,打開前面的鏈接之后,選擇5.0.0.M3,然后依次打開目錄5.0.0.M3/spring-framework-reference/pdf/spring-framework-reference.pdf,在預覽界面上右鍵,然后另存為即可。
補充:
1. AJDT插件的安裝
本來打算把自己寫的測試用例同步到github上呢,結果把項目給弄崩了,然后試著這個博客再重新編譯了一次,完美編譯和上傳到github上。不過這次搞好了那個AspectJ插件的安裝,雖然版本和我用的Eclipse版本不一致,但還是裝上了。
這里放上AJDT的頁面鏈接:https://www.eclipse.org/ajdt/downloads/
目前最新的版本是適用于Eclipse 4.10的,我使用的是4.11,但是我還是裝了這個。
總結
以上是生活随笔為你收集整理的使用eclipse导入spring-framework-5.0.x源码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 做科普自媒体是怎么挣钱的?
- 下一篇: MyDriver2-397 XCTF 3