Spring 的源碼已經從 svn 遷移到 GitHub。並且也改成基於 Gradle 的構建來構建項目。它取代了以前的 Ant+Ivy 系統,因此要構建 Spring 源碼環境首先要安裝 GitHub 以及 Gradle。html
Windows 系統對應的 GitHub 版本下載地址爲: https://desktop.github.com/ 。如圖所示:java
下載、安裝,開始菜單上 GitHub 菜單,如圖:linux
Gradle 是一個基於 Groovy 的構建工具,它使用 Groovy 來編寫構建腳本,支持依賴管理和多項目建立,相似 Maven,但比其更加簡單輕便。git
Gradle 爲 Ivy 提供了一個 layer,提供了 build-by-convention 集成,並且他還讓你得到許多相似 Maven 的功能。github
Gradle 的下載地址是:http://www.gradle.org/downloads 做爲初學者建議選擇包含文檔和樣例源碼的壓縮文件較好,將下載文件解壓。若是你下載的是gradle-xx-all.zip的完整包,它會有如下內容:二進制文件用戶手冊(包括PDF和HTML兩種版本),DSL參考指南,API手冊(包括Javadoc和Groovydoc),樣例源代碼,僅供參考使用。spring
在windows中的Gradle配置:在環境變量對話框中,定義環境變量GRADLE_HOME到你的gradle根目錄當中,而後修改環境變量 Path,即追加 %GRADLE_HOME%\BIN;(linux或mac的是$GRADLE_HOME/bin)。windows
配置完成以後,當完成系統變量的配置後打開命令窗口輸入命令 " gradle -version ",若是出現Gradle對應的版本信息,表示安裝成功。框架
下載地址:https://github.com/SpringSource/spring-framework/tags/dom
選擇須要的版本下載zip便可。eclipse
下載地址:https://github.com/SpringSource/spring-framework/tags/
Window-->Open Perspective -->SVN資源庫研究把源碼用svn checkout到本地磁盤
單擊快捷菜單中的 Git Shell 選項,打開 GitHub 後,能夠經過 cd 命令將當前操做目錄轉換到咱們想要存儲源碼的目錄。
例如:e:\test ,執行命令 cd e:\test
輸入如下命令:
git clone git://github.com/SpringSource/Spring-framework.git
其中,git://github.com/SpringSource/Spring-framework.git 爲Spring的源碼地址。執行命令後便進入源碼下載狀態。
通過一段時間的等待後源碼下載結束,窗口狀態以下圖
而這時,對應的文件夾下已經存在相應的源碼信息,以下圖所示。
使用gradle構建項目
當前的源碼並不能夠直接導入 Eclipse 中,咱們還須要將源碼轉換爲 Eclipse 能夠讀取的形式。
能夠只對感興趣的工程進行 Eclipse 工程轉換,好比咱們想要查看 Spring 事務部分的源碼,打開命令窗口,將當前目錄切換至源碼所在目錄,這裏是 Spring-tx文件夾下,執行命令 gradle cleanidea eclipse 。當窗口出現以下狀態說明已經開始執行轉換過程,以下圖:
通過一段時間後轉換成功,以下圖所示、
這時,咱們再查看對應的文件夾會發現,已經出現了做爲 Eclipse 工程所必須的 .project 和 .classpath 文件了,以下圖所示
沒有編譯過的
編譯以後的
打開 Eclipse,將工程導入,導入後目錄結構以下圖
你會發現工程名稱前面有一個感嘆號,這說明項目存在錯誤。查看依賴及工程,會看到當前工程所依賴的包出現問題。以下圖
可是,查看依賴的 Projects 時發現
依賴的項目出現問題,只須要把須要的幾個項目編譯以後導入就能夠了。
依賴的包出現問題,後邊解決。
能夠將全部工程一次性的編譯、導入。可是不推薦這樣的方式,這樣會耗費大量的時間,並且當存在編譯錯誤的時候,你不得不從新編譯。
pring-framework目錄裏面有一個gradlew.bat批處理文件,雙擊出現控制檯界面,連續按兩次回車鍵,下載各類依賴jar包和dom文件,公司外網很差,用了幾個小時,沒下下來,這就尷尬了。
spring-framework目錄裏面有一個import-into-eclipse.bat批處理文件,雙擊出現控制檯界面,連續按兩次回車鍵,就能夠開始自動構建了,構建過程須要花很長時間(若有沒有提早執行gradlew.bat,這裏就會下載各類依賴jar包和dom文件)。
中間還常常出現中止不動的狀況,按Ctrl+c終止運行,再一次雙擊import-into-eclipse.bat文件重複上述過程便可(會接着上次構建的位置繼續構建),到構建完成後控制檯會自動關閉。
最後刪除spring-framework下的setting文件夾和project文件,不然eclipse只能導入總體,不能導入每一個工程。
暫時遇到:缺失spring-cglib-repack-3.2.4.jar和spring-objenesis-repack-2.4.jar。
雖然可能從網上下載到這個2個包,可是,因爲版本問題,仍是不能使用。最好的解決辦法就是從源碼裏邊將須要的包提取出來
下載對應版本的dist.zip文件來提取須要的jar包(distribution,發佈用的版本)訪問地址:http://repo.springsource.org/libs-release-local/org/springframework/spring/ (可能會很慢)
解壓spring-framework-4.3.0.RELEASE-dist\spring-framework-4.3.0.RELEASE\libs目錄下的spring-core-4.3.0.RELEASE.jar文件
在cmd命令窗口下切換到上一步的目錄下,
使用jar命令生成須要的jar文件 :
spring-cglib-repack-3.2.4.jar
命令:jar cvf spring-cglib-repack-3.2.4.jar org\springframework\cglib
spring-objenesis-repack-2.4.jar
命令:jar cvf spring-objenesis-repack-2.4.jar org\springframework\cglib
查看當前目錄E:\spring\code\spring-framework-4.3.0.RELEASE-dist\spring-framework-4.3.0.RELEASE\libs\spring-core-4.3.0.RELEASE下確實生成了須要的jar文件
驗證一下生成的jar包的目錄結構是否正確(由於第一次操做的時候不注意,致使雖然包打好了,可是目錄結構不對,最終不能使用)
若是eclipse沒有安裝groovy插件,則spring-beans-groovy包中的GroovyBeanDefinitionReader.java會報錯,由於eclipse不能編譯groovy腳本。
報錯信息:
Description Resource Path Location Type
GroovyDynamicElementReader cannot be resolved to a type
GroovyBeanDefinitionReader.java /spring-beans-groovy/src/main/java/org/springframework/beans/factory/groovy line 391 Java Problem
Groovy 下載地址:http://groovy-lang.org/download.html
step 1:檢查本身的eclipse版本:在help->About Eclipse中查看:
step 2:進入 https://github.com/groovy/groovy-eclipse/wiki查找和本身eclipse對應版本的groovy:
step 3:拷貝下載地址http://dist.springsource.org/snapshot/GRECLIPSE/e4.6/
step 4:打開eclipse,在eclipse中,選擇help -> Install New Software…:
step 5:選擇add,對話框中name隨便寫,地址將上面拷貝的地址粘貼進去:
step 6:等待一小會,會出現以下選項,全選後下一步:
重啓eclipse,而後clean一下項目就搞定了。
在Eclipse菜單File->import選擇General下面的Exsiting projects into workspace
Spring環境搭建--Spring源碼深度解析:
http://www.cnblogs.com/chuzh/p/4996976.html
Spring官網下載dist.zip的幾種方法:
http://www.cnblogs.com/yjmyzz/p/3847364.html
spring源碼構建時缺失spring-cglib-repack-3.2.4.jar和spring-objenesis-repack-2.4.jar:
http://www.itdadao.com/articles/c15a711547p0.html
spring源碼gradle得到eclipse工程時,spring-beans-groovy項目GroovyDynamicElementReader報錯解決
http://blog.csdn.net/smithdoudou88/article/details/46356305