导入Spring5.2.x源码到IDEA中

前言

Java世界中主要有三大构建工具:Ant、Maven 和 Gradle。

目前 Ant 用的很少了,在 Tomcat 源码中使用的还是 Ant 构建的。

Spring 源码中并没有使用到 Maven 构建项目,而是用的 Gradle,所以需要用到 Gradle 工具,大家可以提前去下载 Gradle 工具,不想自己下的也可以自动下载,具体是怎么自动下载的往下看…

一、下载Spring 5.2.x版源码

下载地址:https://github.com/spring-projects/spring-framework
ps:可以使用git克隆,也可以直接下载压缩包进行解压。

因为 Spring 默认是国外的 Gradle 镜像,构建源码依赖的时候会很慢,所以修改为国内阿里的镜像地址。进入 Spring 根目录下的 build.gradle 文件,Ctrl+F 搜索 repositories,然后把它里面的值修改为以下内容:

repositories {
	maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
	maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}
}
配置repositories国内镜像

二、构建Spring源码

在Spring源码的根路径下有这么一个文件:import-into-idea.md,这个文件会告诉你如何将Spring源码导入到IDEA中。如果这个文档看不懂没关系,咱们接着往下看…

  • win+r输入cmd进入Spring源码根路径下,执行命令:gradlew.bat

这条命令首先会根据配置下载 Gradle 工具, 这个配置文件在 Spring 源码根路径下的 gradle\wrapper\gradle-wrapper.properties 文件中,进入该文件可以看到:distributionUrl=https://services.gradle.org/distributions/gradle-5.6.4-bin.zip,这条配置信息就是 gradle 工具的下载地址,然后它会先自动下载 gradle 工具。下载好后会进行编译,再等待一会… 出现 BUILD SUCCESSFUL 的提示就表示成功。

gradle版本配置文件
  • 编译spring-oxm 模块,执行命令:gradlew.bat :spring-oxm:compileTestJava

这条命令是从 import-into-idea.md 文件中看到的。不同版本 Spring 源码可能这条命令也会有所不同,比如有的是:gradlew.bat cleanIdea :spring-oxm:compileTestJava,所以说不要盲目 copy。以下结果表示执行成功:
两条gradlew命令执行成功
其中 Gradle 5.6.4 会被下载到 C:\Users\Administrator.gradle\wrapper\dists\gradle-5.6.4-bin 目录下,进入这个文件可以看到一串字母加数字的文件 bxirm19lnfz6nurbatndyydux\gradle-5.6.4,然后这个文件中就是Gradle 真正存储的位置。
gradle存储位置

三、Spring源码导入IDEA

打开 IDEA,点击 Open 直接打开你的 Spring 源码,配置 Gradle 和 JDK ,最后 FInish 即可。
导入Gradle所选配置
然后 IDEA 通过本地的 Gradle 5.6.4 工具来编译 Spring 项目,这个时间可能会比较慢…等待一段时间…等的时间不妨点个赞支持一哈哈哈哈鹅。当所有的模块都出现个小小的蓝色图标,表示编译成功,至此 Spring 源码导入完成。
成功导入Spring源码

四、创建测试项目

  1. 创建一个自己的测试 module:右击项目 -> new -> module -> gradle。
    创建Gradle项目
    添加自定义模块

  2. 在新项目的 build.gradle 下添加对spring模块的依赖,这里我先添加了 spring-beans 、spring-core和spring-context 的依赖。

    compile(project(":spring-beans"))
    compile(project(":spring-core"))
    compile(project(":spring-context"))
    
  3. 在新项目的 src/main/resource 下添加 spring-config.xml 文件

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    
       <bean id="myTestBean" class="cc.bieber.MyTestBean"/>
    
    </beans>
    
    创建spring config.xml文件
  4. 创建测试 Bean 和启动类

/**
 * @author Mebieber
 * @desc 自定义的测试Bean
 */
public class MyTestBean {
   private String name = "Mebieber";

   public String getName() {
      return name;
   }

   public void setName(String name) {
      this.name = name;
   }
}
package cc.bieber.spring;

import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * @author Mebieber
 * @desc 启动类
 */
public class AppTest {
	public static void main(String[] args) {
		ClassPathXmlApplicationContext app = new ClassPathXmlApplicationContext("spring-config.xml");
		MyTestBean myTestBean = (MyTestBean) app.getBean("myTestBean");
		System.out.println("My Name is " + myTestBean.getName());
	}
}

运行时共会报两个错:CoroutinesUtils 错误和 InstrumentationSavingAgent 错误。

1)解决 CoroutinesUtils 错误

spring core报错

双击这个报错会进入到 ReactiveAdapterRegistry 这个类,然后按住 Ctrl+左键进入 CoroutinesUtils.kt,这个文件是由 kotlin 语言编写的(Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言)。好了,不买关子了,其实解决这个问题很简单,只需要编译一下 spring-core 模块下的 main 包就可以了,哈哈哈是不是好简单…

解决CoroutinesUtils问题

2)解决 InstrumentationSavingAgent 错误

spring-context的依赖发现,spring-instrument 在 spring-context 中为 optional 依赖:optional(project(":spring-instrument")),于是在自己的模块中添加spring-instrument依赖。

在项目的 build.gradle 下添加以下依赖:

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

再次运行项目就不会报错啦!!!

Success

接下来就可以愉快的调试代码啦哈哈哈鹅…



感谢

参考:https://www.cnblogs.com/java-chen-hao/p/11046190.html#_label0#commentform

参考:找不到CoroutinesUtils错误

参考:找不到InstrumentationSavingAgent的错误

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值