閱讀Sring源碼前的準備工做

SpringFramework項目的源代碼能夠從github上下載到,   閱讀源碼以前,須要將構建項目的基礎環境搭建好,主要包括JDK、GIT、Gradle的安裝與配置。另外,在公司項目的開發中,咱們使用的開發工具一直是Eclipse,此次我嘗試使用IDEA來閱讀Spring項目的源碼,學習源碼的同時,順便也掌握IDEA的使用,筆記,這個開發工具是當下主流的開發平臺。java

 基礎環境搭建

            說明:如下環境信息是在Windows環境中配置的。git

        JDK版本:

            官方給出的版本是JDK 8 update 20 or later,我用的是1.8.0_131。github

            

        安裝GIT:

           用來下載源代碼使用,我本地安裝的是Git-2.13.0-64-bit.exe,安裝完畢後能夠直接使用Git bash,以命令的形式clone代碼。另外也能夠安裝TortoiseGit,經過圖形化界面來操做。spring

        安裝Gradle:

            SpringFramework項目是基於Gradle構建的,咱們在本地想要經過IDE來閱讀源碼的話,必須經過Gradle進行構建。項目裏面提供了構建腳本,只有安裝了Gradle後才能夠運行。關於Gradle的安裝到官網下載,而後配置環境變量就能夠,與配置JDK的環境變量步驟相似,再也不贅述,配置完畢後,在cmd命令行中,用gradle -version來檢查版本,若是配置無誤,顯示信息以下:bash

            

            下載源碼:

             在本地環境,經過Git bash將源代碼下載到本地,SpringFramework項目的github地址是https://github.com/spring-projects/spring-frameworkoracle

             構建源碼:

                能夠選擇所有構建或者單獨構建某一個模塊。eclipse

  • 所有構建

          進入項目根目錄,點擊gradlew.bat或者【shift】+鼠標右鍵,彈出的菜單中,選擇【在此處打開命令窗口】,執行gradlew.bat build,進行所有構建,我試了一下,很是慢,另外,可能會中途出錯。所有構建時,源碼與測試模塊都要構建一遍,可使用gradlew.bat build -test 跳過每一個組件的單元測試模塊進行構建。我下載後直接用master分支構建的,因此,源碼的版本是5.2.0。構建完成後,每一個模塊下面,會生成源碼Jar包、編譯後的Jar包以及JavaDoc Html文檔。ide

  • 構建某一個模塊

進入項目根目錄,在命令行中執行gradlew.bat -a :spring-beans:test構建spring-beans模塊。工具

    導入IDEA開發平臺中

    項目根目錄中,有對應的導入說明:單元測試

  • import-into-eclipse.md:導入eclipse的說明;
  • import-into-idea.md:導入idea的說明

    

1. Precompile `spring-oxm` with `./gradlew :spring-oxm:compileTestJava`
2. Import into IntelliJ (File -> New -> Project from Existing Sources -> Navigate to directory -> Select build.gradle)

                根據裏面說明的步驟導入就能夠,導入成功後,就能夠愉快地看源碼了。

最後,構建時出現的問題,org.springframework.http.codec.multipart.DefaultMultipartMessageReader.java的268行出現錯誤,編碼GBK的不可映射字符:

                

 

在網上搜瞭解決方案,說的最多的是,在build.gradle中設置Java文件的編譯編碼,可是我打開buid.gradle文件後發現,裏面已經有了! 我只要將出問題的這個類用EditPlus打開後將編碼集修改成ANSI,最後驗證問題解決。

經過此次構建過程,總結以下:

  • 寫原創博客真的不是一件容易的事情,我給本身定的目標是堅持一年;
  • 寫技術類的文章,最好與實踐相結合;
  • 遇到問題時,多作記錄,找到解決方案後,必定要驗證,確保沒有問題後再發布。

 

加油!

相關文章
相關標籤/搜索