spring源碼maven
⑴ 如何把github上下載下來的maven源代碼zip文件打包成可運行的jar文件
1.下載Spring源碼
git下載地址:https://github.com/SpringSource/spring-framework/
2.下載完成後,編譯前需滿足的先決條件
1)當前系統中安裝了gradle,如果為安裝,可以從:http://www.gradle.org/downloads,選擇一個版本進行下載
2)當前系統安裝了OpenJDK 8 early access build 100 or later,點擊鏈接可以下載。安裝後還需要確認java_HOME環境變數中指向了剛安裝的JDK8
3)鑒於上次編譯Hibernate的經驗,建議修改區域語言為「英語(英國)」,防止在編譯過程中出現字元編碼錯誤。
3.運行編譯命令,將代碼編譯為eclipse項目
1)命令行下切換當當前spring代碼的根目錄
cd C:\Users\Administrator\Documents\GitHub\spring-framework
2)運行import-into-eclipse.bat,這次不是直接運行gradlew.bat,但打開import-into-eclipse.bat可以看到,其實其內部還是調用了gradlew,如:
72行 set COMMAND=gradlew :eclipse
90行 call %COMMAND%
3)編譯時會提示你安裝Spring STS,下載地址
http://springsource.org/downloads/sts
選擇相應的版本下載,我選擇下載的是基於ECLIPSE KEPLER 4.3的32位zip版
下載地址為:
http://download.springsource.com/release/STS/3.3.0/dist/e4.3/spring-tool-suite-3.3.0.RELEASE-e4.3-win32.zip
直接回車確認即可
4)接著會提示要運行的命令是:
./gradlew cleanEclipse :spring-oxm:compileTestJava eclipse -x :eclipse
直接回車確認
5)接下來會自動下載所需的依賴包,等待其下載、編譯完成即可。
編譯的過程中,第一次編譯停留在「> Building > :spring-core:cglibRepackJar」這個提示處很久,查看cmd的進程,貌似死了,我將其結束後重新運行,依舊停留在這個地方。
註:在編譯過程中,經常出現在下載依賴項時沒有響應的情況,需要找到對應的java進程,結束後重新運行,或者直接關閉命令行窗口重新來一次,暫未找到具體原因。
猜測應該和我的網路狀況和java環境有關,編譯過程中嘗試了jdk8的32位和64位版本,都有這個問題。
在編譯多次不成功以後,我通過運行gradlew.bat install,嘗試先把所有的依賴項都先下載下來,在下載子項目相關的依賴項的過程中,仍然會出現命令沒有響應的情況,只能一次又一次地關閉,重新運行。
一次又一次編譯假死後,終於看到了「BUILD SUCCESS」,再次運行import-into-eclipse.bat,這次運行,跳過了很多之前需要下載的依賴項,應該是運行install命令的時候已經下載過了,但還是有一些仍然需要下載的依賴項。觀察輸出,會發現首先會下載依賴項所對應的pom文件,接著才會下載對應的jar。應該是和Maven相關的,有時間要把Maven、ant、ivy、gradle這些都看一下。
⑵ spring源碼是怎樣導出成可以被其他項目依賴的maven類型的jar包
一、導出到默認目錄 targed/dependency
從Maven項目中導出項目依賴的jar包:進入工程pom.xml 所在的目錄下,執行如下命令:
1
mvn dependency:-dependencies
或在eclipse中,選擇項目的pom.xml文件,點擊右鍵菜單中的Run As,見下圖紅框中,在彈出的Configuration窗口中,輸入dependency:-dependencies後,點擊運行
maven項目所依賴的jar包會導出到targed/dependency目錄中。
二、導出到自定義目錄中
在maven項目下創建lib文件夾,輸入以下命令:
1
mvn dependency:-dependencies -DoutputDirectory=lib
maven項目所依賴的jar包都會復制到項目目錄下的lib目錄下
三、設置依賴級別
同時可以設置依賴級別,通常使用compile級別
1
mvn dependency:-dependencies -DoutputDirectory=lib -DincludeScope=compile