GitHub Spring源码下载链接: https://github.com/spring-projects/spring-framework.
注意:下载的时候选择branch和对应的tag,下载RELEASE版本的,这种是正式版,稳定性更好,M1,M2,…中的M是milestone的意思,意思是里程碑,代表着有重大改进的版本。用git克隆或者直接下载zip包,我一般都是用spring-framework-5.1.20.RELEASE。由于5.1.20版本的源码,我之前很早就编译过了,所以后面演示我用的spring-framework-5.2.10.RELEASE重新构建一遍。
安装源码对应的gradle版本(也可以不安装),建议使用gradleWrapper中的gradle。gradleWrapper在该文件中有体现,相当于远程自动下载,所以可以不下载gradle,采用远程的同一版本。
**文件路径:**F:\spring-framework-5.2.10.RELEASE\gradle\wrapper\gradle-wrapper.properties,如果下载gradle,最好和该文件中版本一致。
distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists
修改bulid.gradle文件
F:\spring-framework-5.2.10.RELEASE\build.gradle
添加阿里云镜像,减少因jar包下载不下来而导致的问题。
repositories { <!--添加阿里云镜像--> maven{url 'http://maven.aliyun.com/nexus/content/groups/public/'} maven{url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'} mavenCentral() maven { url "https://repo.spring.io/libs-spring-framework-build" } }
打开源码所在文件夹,在window cmd命令中输入:
gradlew :spring-oxm:compileTestJava
编译报错:
Error resolving plugin [id: ‘io.spring.gradle-enterprise-conventions’, version: ‘0.0.2’]。如果出现下图所示的错误,则修改bulid.gradle文件。
首先,将第三行中的id ‘io.spring.gradle-enterprise-conventions’ version '0.0.2’注释掉,然后修改mavenBom中的依赖版本,如下图所示。
//id 'io.spring.gradle-enterprise-conventions' version '0.0.2'
mavenBom "io.netty:netty-bom:4.1.39.Final" //原先是4.1.51 mavenBom "io.projectreactor:reactor-bom:Dysprosium-SR9" //原先是SR13
修改完后,重新编译,构建成功。