spring源码编译(spring,gradle,idea)

超详细的spring源码编译

记:编译成功时间:2021.01.27
环境准备:
1.idea2019.3.4
2.jdk1.8
3.gradlegradle-5.6.4
4.spring源码(版本:spring-framework-5.2.12.RELEASE)

一.spring源码下载

1.首先进入链接:下载地址(Spring的源码是发布在github上面的)
2.看下图(我选择的是RELEASE版本,也就是正式发布的版本,下载一个最新的RELEASE版本就行了)
spring源码编译(spring,gradle,idea)_第1张图片
3.点击相对应的版本,然后看下图进行下载
spring源码编译(spring,gradle,idea)_第2张图片

二.gradle的安装

(说明:将源码包解压以后,gradleWraper中的gradle可以远程下载gradle,也就是在spring-framework-5.2.12.RELEASE\gradle\wrapper\gradle-wrapper.properties有相应的体现。但是我没有使用远程下载,因为自己尝试了好几次,都会失败,所以自己在本地安装了一个gradle。上教程。)

gradle的下载

选择版本很重要,千万不要随意去选择一个版本,要不然后面可能会出很多的问题。版本参考spring-framework-5.2.12.RELEASE\gradle\wrapper\gradle-wrapper.properties文件中的相应版本,如下图:
spring源码编译(spring,gradle,idea)_第3张图片
gradle下载链接:gradle下载(选择对应的binary-only版本就行)

gradle的安装

1.解压刚刚下载的gradle压缩包
2.打开电脑的环境变量,配置GRADLE_HOME ,如下图:
spring源码编译(spring,gradle,idea)_第4张图片
3.在系统变量 path中加入:%GRADLE_HOME%\bin
spring源码编译(spring,gradle,idea)_第5张图片
4.gradle也是需要本地仓库的,要配置一个本地仓库。在本地磁盘中建一个文件夹,然后在系统变量中添加一个GRADLE_USER_HOME,然后把文件夹路径添加进去就行了,如下图:
spring源码编译(spring,gradle,idea)_第6张图片
5.测试gradle是否安装完成:在cmd输入gradle -v如果出现版本号这些就算是安装成功了。

三.修改spring源码中的一些地方

1.因为我们自己配置了gradle,所以需要修改gradle\wrapper\gradle-wrapper.properties文件内容,让它使用我们自己配置的gradle,要不然它还是会去远程下载。
原文件是这样:
spring源码编译(spring,gradle,idea)_第7张图片
将distributionUrl修改成我们自己的gradle压缩包路径,如下图:
spring源码编译(spring,gradle,idea)_第8张图片

distributionUrl=file\:///d\:/javaTools/gradle-5.6.4-bin/gradle-5.6.4/gradle-5.6.4-bin.zip

2.找到build.gradle文件并打开,注释掉一行代码(我反正没有注释编译不会成功),如下图:
spring源码编译(spring,gradle,idea)_第9张图片
3.同样在build.gradle文件中找到repositories部分,添加阿里云镜像,这样编译会更快,如下图:
spring源码编译(spring,gradle,idea)_第10张图片

maven{
      url 'https://maven.aliyun.com/nexus/content/groups/public/'}
maven{
      url 'https://maven.aliyun.com/nexus/content/repositories/jcenter'}
maven {
      url "http://repo.springsource.org/plugins-release" }

4.找到settings.gradle文件并打开,同样找到找到repositories部分,添加下面代码

maven{
      url 'https://maven.aliyun.com/nexus/content/groups/public/'}

spring源码编译(spring,gradle,idea)_第11张图片

四.进行预编译

打开源码所在文件夹,在windows cmd命令中输入:

gradlew :spring-oxm:compileTestJava

spring源码编译(spring,gradle,idea)_第12张图片
最后显示成功即可,因为我这个是二次编译,所以用的时间较少,正常应该需要几分钟时间。

五.将源码导入idea

1.直接使用idea打开源码那个文件夹就行
spring源码编译(spring,gradle,idea)_第13张图片
2.如果导入进去后就开始编译了,就需要暂停编译,需要修改一些配置,要不然他还是会去远程下载gradle,我们自己本地的就无效。
依次打开:file—> setting,然后搜索gradle,点击gradle,修改成如下图:
spring源码编译(spring,gradle,idea)_第14张图片
对这个配置有个比较重要的地方说明一下:Build and run using 和 Run tests using这两个选项不要使用默认的,选择idea来进行编译会快很多(我测试过了,快了不是一点点,是很多)
3.然后就可以点击下方的build开始编译了,如下图
spring源码编译(spring,gradle,idea)_第15张图片
最后如果全是绿勾勾说明编译成功。

六.测试

1.点击项目名,右击鼠标新建一个module(new->model->gradle–>输入模块名称),注意选择gradle。随便命名。
2.给自己新添加的模块添加依赖:

compile(project(":spring-context"))

spring源码编译(spring,gradle,idea)_第16张图片
3.随意添加任意bean:

package cn.ccb.beans;

import org.springframework.stereotype.Service;

/**
 * @auther ccb
 * 2021/1/27 10:47
 * @Slogan: 可以写不出一行高深的代码,但是写出的每一行代码必须规范
 * @描述:
 */
@Service
public class UserServiceImpl {
     
	public void sayHello(){
     
		System.out.println("你好呀spring!");
	}
}

4.添加启动配置类:

package cn.ccb.beans;

import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

/**
 * @auther ccb
 * 2021/1/27 10:48
 * @Slogan: 可以写不出一行高深的代码,但是写出的每一行代码必须规范
 * @描述:
 */
@Configuration
@ComponentScan("cn.ccb")
public class MainStat {
     
	public static void main(String[] args) {
     
		ApplicationContext context=new AnnotationConfigApplicationContext(MainStat.class);
		UserServiceImpl bean = context.getBean(UserServiceImpl.class);
		bean.sayHello();

	}
}

5.正确输出,成功上岸呀!
spring源码编译(spring,gradle,idea)_第17张图片

七.我遇到的问题

1、CoroutinesUtils找不到该类
Error:(354, 51) java: 找不到符号
符号: 变量 CoroutinesUtils
位置: 类 org.springframework.core.ReactiveAdapterRegistry.CoroutinesRegistrar
解决办法:
点击File -> Project Structure -> Libraries -> + -> Java,然后选择spring-framework/spring-core/kotlin-coroutines/build/libs/
kotlin-coroutines-5.2.12.RELEASE.jar,在弹出的对话框中选择spring-core.main,在重新build项目即可(重新编译出现新问题可不管,直接运行代码就可以了)
spring源码编译(spring,gradle,idea)_第18张图片
spring源码编译(spring,gradle,idea)_第19张图片
spring源码编译(spring,gradle,idea)_第20张图片

你可能感兴趣的:(java,maven,gradle,spring)