構建環境 macOS 10.13.6 JDK1.8 IntelliJ IDEA 2018.3.6 (Ultimate Edition) "Spring v5.1.9.RELEASE" Gradle 5.5.1。直接使用brew安裝Gradle 源碼構建 1.源碼導入 2.閱讀Spring源碼下的 i ...
構建環境
- macOS 10.13.6
- JDK1.8
- IntelliJ IDEA 2018.3.6 (Ultimate Edition)
- Spring v5.1.9.RELEASE
- Gradle 5.5.1。直接使用brew安裝Gradle
brew install gradle
源碼構建
1.源碼導入
2.閱讀Spring源碼下的 import-into-idea.md 文件可知
Precompile
spring-oxm
with./gradlew :spring-oxm:compileTestJava
3.修改 gradle/docs.gradle 腳本
一開始嘗試直接構建Spring源碼,在構建的過程中會報錯,通過修改docs.gradle 腳本,註釋 dokka
和 asciidoctor
4.源碼構建
等了好長好長的時間,終於構建完成了。
5.在Spring項目中新增一個自己的module,嘗試運行hello world,引入spring-context 依賴 compile(project(":spring-context"))
6.運行main方法,發現報錯
Error:(160, 32) java: 找不到符號 符號: 變數InstrumentationSavingAgent 位置:
網上搜索了一大堆的解決方法,發現都不行。後來看了spring-context的依賴發現,spring-instrument 在 spring-context 中為 optional 依賴(optional(project(":spring-instrument"))
),於是在自己的模塊中添加spring-instrument依賴
再次運行main方法,程式運行成功。
ps:令我感到奇怪的是,當我在寫這篇總結時,嘗試通過移除spring-instrument依賴來複現上述的問題時,發現復現不了了,好神奇。