如何閱讀Spring源碼
簡介
最近有許多人問我如何閱讀Spring源碼,那我便在這給出閱讀源碼的方法,能夠保證本地能夠讓源碼能夠運行起來。
Spring 源碼環境本地編譯
Gradle下載地址
通過網盤分享的文件:gradle-6.4.1-all.zip
鏈接: https://pan.baidu.com/s/1bnBpq6SpyJ3zyFIA204mmQ?pwd=ftgi 提取碼: ftgi
Spring源碼下載地址
通過網盤分享的文件:spring-framework-master.zip
鏈接: https://pan.baidu.com/s/1NFjg4MJmYxoEr78ZyMzxMg?pwd=5wrw 提取碼: 5wrw
Spring 源碼是需要使用 gradle進行編譯的,本教程采用 gradle 6.4.1 進行說明; 第二個文件是 spring 5.3 版本的源碼。
配置Gradle環境變量
解壓gradle-6.4.1-all.zip到任意目錄,這些配置一定要根據自己實際解壓的目錄去配置否則會找不到!!!
配置 GARDLE_HOME
配置path
解壓 spring-framework-master
修改 settings.gradle 文件
添加國內阿里云依賴地址:
maven { url 'https://maven.aliyun.com/repository/public' }
修改 gradle.properties 文件
將 org.gradle.jvmargs的值修改為 -Xmx2048M; 并添加 org.gradle.daemon=true
修改 build.gradle 文件
加上使用阿里云倉庫,提高下載速度
maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter'}
修改setting.gradle 刪除 第11 行
修改 build.gradle 第29 行
刪除 snapshot
修改代碼
修改spring-framework-master\buildSrc\src\main\java\org\springframework\build\compile\CompilerConventionsPlugin.java 代碼,刪除第 62 行的 “-Werror”, 注意把之前的逗號也刪掉(或者可以直接用我的覆蓋Static代碼)
static {List<String> commonCompilerArgs = Arrays.asList("-Xlint:serial", "-Xlint:cast", "-Xlint:classfile", "-Xlint:dep-ann","-Xlint:divzero", "-Xlint:empty", "-Xlint:finally", "-Xlint:overrides","-Xlint:path", "-Xlint:processing", "-Xlint:static", "-Xlint:try", "-Xlint:-options");COMPILER_ARGS = new ArrayList<>();COMPILER_ARGS.addAll(commonCompilerArgs);COMPILER_ARGS.addAll(Arrays.asList("-Xlint:varargs", "-Xlint:fallthrough", "-Xlint:rawtypes", "-Xlint:deprecation","-Xlint:unchecked"));TEST_COMPILER_ARGS = new ArrayList<>();TEST_COMPILER_ARGS.addAll(commonCompilerArgs);TEST_COMPILER_ARGS.addAll(Arrays.asList("-Xlint:-varargs", "-Xlint:-fallthrough", "-Xlint:-rawtypes","-Xlint:-deprecation", "-Xlint:-unchecked", "-parameters"));
}
編譯
編譯 spring-oxm
進入spring源碼的位置使用cmd進入控制臺,運行以下命令(第一次下載會比較慢):
gradle.bat :spring-oxm:compileTestJava
看到如下則證明依賴下完了
編譯spring-core 模塊
編譯完成后,在執行一下命令:
gradle.bat :spring-core:compileTestJava
看到如下則證明編譯完了
將Spring源碼導入 idea 并進行配置
驗證源碼是否可用
在源碼目錄下新建一個模塊
build.gradle中的依賴如下:
plugins {id 'java'
}group = 'org.spring'
version = '5.3.0-SNAPSHOT'repositories {mavenLocal()maven{url 'https://maven.aliyun.com/nexus/content/groups/public'}maven{url 'https://maven.aliyun.com/nexus/content/repositories/jcenter'}mavenCentral()
}dependencies {testCompile group: 'junit', name: 'junit', version: '4.12'compile(project(":spring-context"))}test {useJUnitPlatform()
}
測試
結果
結尾
至此,已經能夠保證本地Spring源碼是能夠使用的了,如有小白有配置上的問題,歡迎后臺私信喲,看見會馬上回復的。