Spring5.1.x源碼編譯是個沒有技術含量,但是很難成功的,折騰了好久,電腦還藍屏。
學習Java,肯定要學Spring框架,學了Spring,找工作肯定問框架源碼,學源碼你得自己會編譯,不然寫個註釋還得粘貼出來,總的來說,你得學會源碼編譯。
第一步:下載Spring源碼+Gradle
源碼地址:https://github.com/spring-projects/spring-framework。選擇具體的 branches
Spring5.1.x https://github.com/spring-projects/spring-framework.git 隨你git clone,還是download zip.
1.1 觀察文檔
下載完成後的文件,打開 spring-framework-idea\gradle\wrapper\gradle-wrapper.properties 文件夾
發現裏面有 distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.3-bin.zip // gradle 版本
1.2 下載 gradle 版本
gradle地址: https://gradle.org/releases/
版本最好一致,版本不一致,有的成功了,反正我是失敗了。
第二步:編譯方式選擇
Spring 提供三種編譯代碼的方式,gradle方式,IDEA方式,eclipse方式
在下載的源碼中有三個文件:分別教你如何編譯,但是我都失敗了。
2.1 gradle 添加環境變量,path裏面添加%%/bin,gradle -v 查看版本號,gradlew build 就可以了,反正我是不可以,還藍屏
2.2 eclipse不想折騰了,用的也不多。
第三步:IDEA方式
3.1 idea導入工程選擇 gradle,導入下載的代碼
3.2 修改 gradle
3.3 更改鏡像源(可選) 推薦第一次不要改,如果不能的話再修改
源碼下面有個 build.gradle 文件夾。
buildscript {
repositories {
maven { url 'https://plugins.gradle.org/m2/' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' }
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}
}
plugins{
原來的配置。。。。。。
}
allprojects {
repositories {
maven { url 'https://plugins.gradle.org/m2/' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' }
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}
}
}
位置不能錯
工程會進行自動編譯了,時間可能會長,可能會短。
第四步: 編譯源碼
4.1 點擊IDEA右上方的gradle,過程已經build好,然後點擊 spring-core,按下圖一次點擊,編譯 compileTestJava
core 是爲了添加兩個jar包,(Spring源碼防止包衝突,所以剔除了)。
4.2 spring-oxm 也是一樣
4.3 spring-aspects 右擊忽略,我卡這邊好久,因爲spring的AOP用的aspectCJ這個包,不忽略無法編譯成功.
4.4 最後編譯全部,按照上面兩個圖。
第五步:測試
新建module,選擇maven,你也可以選擇 gradle。我maven用的熟悉,(gradle寫Android,幾年不寫了,忘了)
工程都會建吧。小白不用學源碼,大神不屑看我,就我這種半桶水的才需要看源碼。
更改依賴,不然maven裏面還是maven倉庫裏面(file read only),不是源碼.
5.1 點開
5.2 選擇源碼 classes sources 把紅色的減去(一般是你的maven倉庫地址),加上你需要的。
5.3 好了 斷點進去,可以編輯,如果需要成功,還是 gradle-> 指定包 -> jar 編譯的
不保證,你們都可以成功,我看了很多視頻很多博客折騰了很久,gradle 看臉,
需要編譯好的源碼,可以聯繫我,但是不建議,因爲很多依賴還是本機裝的。
第六步:最重要的步驟:
當你修改完源碼之後,再斷點調試的時候,位置變了,斷點的指向亂七八糟的,這時候,build spring 那一步,很快的,