使用IDEA编译Spring源码(spring5.2.2)

一、编译前准备

1、gradle安装

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

使用IDEA编译Spring源码(spring5.2.2)_第1张图片

2、jdk安装

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

在这里插入图片描述

3、spring源码下载

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

​ Spring源码下载:https://github.com/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"
在这里插入图片描述

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

三、导入IDEA

打开idea选择(file>new>Project from Existing Sources)选择spring源码根目录下的`build.gradle‘
使用IDEA编译Spring源码(spring5.2.2)_第2张图片

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

使用IDEA编译Spring源码(spring5.2.2)_第3张图片

当看到successful表示编译完成。

注意:

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

使用IDEA编译Spring源码(spring5.2.2)_第4张图片

2、进入project structure中配置jdk:

使用IDEA编译Spring源码(spring5.2.2)_第5张图片

四、编译源码

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

使用IDEA编译Spring源码(spring5.2.2)_第6张图片

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

使用IDEA编译Spring源码(spring5.2.2)_第7张图片

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

五、遇到问题及解决方法

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

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

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

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

使用IDEA编译Spring源码(spring5.2.2)_第8张图片

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

使用IDEA编译Spring源码(spring5.2.2)_第9张图片

选择
使用IDEA编译Spring源码(spring5.2.2)_第10张图片
完后后选择rebuild spring-core

使用IDEA编译Spring源码(spring5.2.2)_第11张图片
到此,上述问题解决完。

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

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

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

找到:

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

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

你可能感兴趣的:(spring)