一、编译前准备
1、gradle安装

此次编译使用的gradel版本是5.6.3,安装配置好环境变量。

idea中怎么设置spring源码报错乱码 idea编译spring源码_maven

2、jdk安装

此次编译使用的是1.8.0_101,安装好后也配置好环境变量;

idea中怎么设置spring源码报错乱码 idea编译spring源码_spring源码_02

3、spring源码下载

本次编译的是spring的5.2.2版本。

Spring源码下载:https:///spring-projects/spring-framework

4、修改maven下载地址

下载完spring源码后找到spring目录下的build.gradle文件将里面的地址:

repositories {
		mavenCentral()
		maven { url "https://repo.spring.io/libs-spring-framework-build" }
}

替换成

repositories {
	maven { name "Alibaba" ; url "https://maven.aliyun.com/repository/public" }
	maven { name "Bstek" ; url "https://nexus.bsdn.org/content/groups/public" }
	mavenCentral()
	maven { url "https://repo.spring.io/libs-spring-framework-build" }
}
二、开始编译

在spring目录才打开命令窗口;执行“gradlew.bat build”命令即可开始编译,但是这个过程中会有一个test过程,非常耗时,所以可以跳过测试。执行命令"gradlew.bat build -x test"

idea中怎么设置spring源码报错乱码 idea编译spring源码_spring源码_03

当看到上面这段话,恭喜你spring构建完成。

三、导入IDEA

打开idea选择(file>new>Project from Existing Sources)选择spring源码根目录下的`build.gradle‘

idea中怎么设置spring源码报错乱码 idea编译spring源码_java_04

导入完成后,idea自动编译一次。

idea中怎么设置spring源码报错乱码 idea编译spring源码_java_05

当看到successful表示编译完成。

注意:

1、进入setting中配置gradel配置;

idea中怎么设置spring源码报错乱码 idea编译spring源码_spring_06

2、进入project structure中配置jdk:

idea中怎么设置spring源码报错乱码 idea编译spring源码_java_07

四、编译源码

1、首先要编译spring-core,在gradel操作栏中找到compileTestJava执行;

idea中怎么设置spring源码报错乱码 idea编译spring源码_java_08

2、在编译spring-context,在gradel操作栏中找到compileTestJava执行;

idea中怎么设置spring源码报错乱码 idea编译spring源码_java_09

待编译完成后,就可以开始spring源码探索之旅了。

五、遇到问题及解决方法

1、当在spring源码中新建一个demo项目时,一切准备完成准备run起来可能会遇到第一个错误:

Error:(354, 51) java: 找不到符号
符号: 变量 CoroutinesUtils
位置: 类 org.springframework.core.ReactiveAdapterRegistry.CoroutinesRegistrar

这个问题是因为一个kotlin中jar依赖问题,解决方法如下:

1、打开project structure,选择library,添加一个依赖;

idea中怎么设置spring源码报错乱码 idea编译spring源码_java_10

选择kotlin-coroutines-5.2.2.BUILD-SNAPSHOT.jar,路径如下;

idea中怎么设置spring源码报错乱码 idea编译spring源码_spring_11

选择

idea中怎么设置spring源码报错乱码 idea编译spring源码_spring_12


完后后选择rebuild spring-core

idea中怎么设置spring源码报错乱码 idea编译spring源码_maven_13


到此,上述问题解决完。

2、还有可能遇到第二个问题:

Error:(26, 38) java: 找不到符号
  符号:   类 InstrumentationSavingAgent
  位置: 程序包 org.springframework.instrument

这个问题需要找到spring-context包下的gradel配置文件,

找到:

optional(project(":spring-instrument"))

将前面的optional修改成compile即可。