Spring源码运行环境搭建
注:笔者这里使用的是5.2.x 版本,具体所需版本还需自行下载
一、Gradle安装
下载 Gradle 请参考 gradle安装包国内下载
二、Spring 下载
Spring对应DK版本:
Spring Framework 6.0.x:JDK 17-21(预期)
Spring Framework 5.3.x:JDK 8-19(预期)
Spring 框架 5.2.x:JDK 8-15
Spring 框架 5.1.x:JDK 8-12
Spring 框架 5.0.x:JDK 8-10
Spring Framework 4.3.x:JDK 6-8
三、修改Spring源码中Gradle配置
1.在下载的Spring源码下修改gradle/wrapper/gradle-wrapper.properties文件如下:
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
## 配置本地gradle, 配置之后需要按下例配置gradle的中央仓库(阿里云maven中央仓库)
distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-5.6.4-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
网络较慢的情况下可以使用以下配置
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
## 配置本地gradle, 配置之后需要按下例配置gradle的中央仓库(阿里云maven中央仓库)
#distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-5.6.4-bin.zip
distributionUrl=file:/D:/soft/gradle/gradle-5.6.4-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
2.修改Spring源码根目录下build.gradle文件中的repositories:
repositories {
// 配置本地maven仓库
mavenLocal()
// 配置阿里云maven仓库
maven { url "https://maven.aliyun.com/nexus/content/groups/public/" }
maven { url "https://maven.aliyun.com/nexus/content/repositories/jcenter/" }
// maven中央仓库
mavenCentral()
maven { url "https://repo.spring.io/libs-spring-framework-build" }
}
3.修改Spring源码根目录下settings.gradle文件中pluginManagement下的repositories:
pluginManagement {
repositories {
// 配置阿里云 maven 中央仓库
maven { url 'https://maven.aliyun.com/repository/public/' }
gradlePluginPortal()
maven { url 'https://repo.spring.io/plugins-release/' }
}
}
或者如下配置
pluginManagement {
repositories {
gradlePluginPortal()
// 配置阿里云 maven 中央仓库
gradlePluginPortal()
maven { url 'https://maven.aliyun.com/repository/public/' }
maven { url 'https://repo.spring.io/plugins-release/' }
}
}
提示
如果仓库地址不为HTTPS,则需要在仓库地址后加 ‘allowInsecureProtocol=true’:
maven {
url 'http://maven.aliyun.com/repository/public/'
allowInsecureProtocol=true
}
四、构建Spring源码
Spring根目录调用cmd,执行gradlew :spring-oxm:compileTestJava
如某个jar包没下载成功等,只需要重新执行gradlew :spring-oxm:compileTestJava
再次进行预编译就行了。
构建完成之后修改根目录下setting.gradle文件,注释掉spring-aspects:
....
include "spring-aop"
// 移除aspects
// include "spring-aspects"
include "spring-beans"
include "spring-context"
....
五、导入IDEA
使用 IDEA 选择源码路径下build.gradle文件导入。
点击File | Settings | Build, Execution, Deployment | Build Tools | Gradle,配置IDEA的Gradle配置:配置Gradle user home为自己Gradle本地仓库目录
Ctrl+Alt+Shift+S
快捷键打开Project Structure。修改工程的SDK,分别将Project、Modules、SDKs中的JDK设置为本地安装的JDK(版本为1.8及以上)。Ctrl+Alt+Shift+S
快捷键打开Project Structure。在Modules中排除spring-aspects:Alt+F12快捷键打开Terminal,使用
gradlew.bat
命令进行编译
注:编译成功后会出现BUILD SUCCESSFUL的提示。如果有报错根据报错信息进行处理,多编译几次即可。
使用shift+shift快捷键输入ApplicationContext
类,使用Ctrl+Shift+Alt+U如果能够成功打开类图,也证明Spring源码构建成功
六、新建自定义测试模块
1.在根目录下新建一个spring-mytest模块
2.将spring-mytest模块下的build.gradle重名名为spring-mytest.gradle
3.在spring-mytest.gradle中添加所使用的模块
plugins {
id 'java'
}
group 'com.king'
version '5.2.26.BUILD-SNAPSHOT'
repositories {
mavenCentral()
}
dependencies {
compile project(':spring-context')
compile project(':spring-instrument')
compile project(':spring-core')
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1'
}
test {
useJUnitPlatform()
}
4.重新build一下
七、常见问题
1.控制台输出乱码
1.在 IDEA help | Edid Custom VM Options 下添加如下配置
-Dfile.encoding=UTF-8
2.修改Spring项目下gradle.properties
org.gradle.jvmargs=-Xmx1536M -Dfile.encoding=UTF-8
2.Connection refused: no further information
"Connection refused: no further information"是一个常见的网络错误,它表示无法建立与目标主机的连接,但没有提供进一步的信息来指示具体原因。这个错误通常出现在应用程序试图通过网络与其他设备或服务器进行通信时。
由于在破解IDea 使用了代理,关闭代理即可
参考
1.Spring源码搭建及相关知识点记录https://blog.csdn.net/qq_31906785/article/details/134246448
6.https://blog.csdn.net/m0_37959155/article/details/126273608