Spring源码编译测试

Spring源码编译(以5.3.22版本为例)

参考作者:程序员七哥 https://www.bilibili.com/read/cv11704879/ 出处:bilibili

本项目环境版本介绍:

原spring源码地址:https://github.com/spring-projects/spring-framework/tree/v5.2.22.RELEASE

spring版本:5.2.22.RELEASE

gradle下载地址:https://services.gradle.org/distributions/gradle-5.6.4-bin.zip

gradle版本:5.6.4

idea版本:2019.3.3

jdk版本:1.8.0_221

  1. 修改Spring源码根目录下/gradle/wrapper/gradle-wrapper.properties,为防止网络不稳定,将gradle下载到本地后指定本地目录。

    修改前:

    distributionUrl=https://services.gradle.org/distributions/gradle-5.6.4-bin.zip

    修改后:

    distributionUrl=file:///D:/SourceCode/springdownload/gradle-5.6.4-bin.zip

  2. 修改远程仓库,在build.gradle和settings.gradle文件中添加阿里云地址

    build.gradle修改前:

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

    build.gradle修改后:

    	repositories {
    		maven { url 'https://maven.aliyun.com/repository/public' } //阿里云
    		mavenCentral()
    		maven { url "https://repo.spring.io/libs-spring-framework-build" }
    	}
    

    settings.gradle修改前

    repositories {
    	mavenCentral()
    	gradlePluginPortal()
    	maven { url "https://repo.spring.io/release" }
    }
    

    settings.gradle修改后

    repositories {
    	maven { url 'https://maven.aliyun.com/repository/public' }
    	mavenCentral()
    	gradlePluginPortal()
    	maven { url "https://repo.spring.io/release" }
    }
    
  3. 在根目录下预编译spring-oxm模块

    ./gradlew :spring-oxm:compileTestJava

在这里插入图片描述

  1. 在根目录下编译spring-core模块

    ./gradlew :spring-core:compileTestJava

在这里插入图片描述

  1. 导入IDEA

    1. 开始使用idea导入Spring源码,File -> New -> Project from Existing Souces…

    2. 选择 Spring 源码项目的目录,进而选择根目录当中的 build.gradle 文件导入

      在一开始的时候,用的是最新的Spring版本,对应的gradle是7.2版本的。其中出现了Idea创建gradle项目后控制台编译报“org.gradle.api.artifacts.result.ComponentSelectionReason.getDescription()Ljava/lang/String;”错误,原因是gradle与idea版本不兼容,出现此问题的idea版本是2019.03,而gradle版本是7.2。解决办法就是下载了一个依赖低版本gradle的spring源码的发行版。

    3. 导入 idea 之后会开始自动构建、建立索引,这个过程也是很漫长,你只能等,我这边用了不到7分钟,看电脑性能;

在这里插入图片描述

关于报git相关的错误,只需将代码放到一个版本管理器中,报错便不会再出现。比如我当时阴差阳错地在自己的gitee上新建了一个代码仓库,然后将spring源码的整个项目放到仓库中后,git报错就不见了。

  1. 接下来我们对 idea 进行一些设置,不然每次 idea 运行都会通过 gradle 去编译运行。gradle 运行编译特别慢,需要改成idea自己编译运行.

说明一下,这里不是一定要改,但是如果你不改用默认的则会特别慢,改成idea快的不止一点点。编译完成后的源码文件在idea打开后的模块文件夹图标会发生变化。

在这里插入图片描述

  1. 新建测试模块

    1. 在根目录下新建module,选择gradle->java

    2. 建好项目之后再 gradle 的配置文件(build.gradle)中添加 spring 的依赖; 相当于你建了一个maven项目,在pom文件中添加spring的依赖;

    implementation(project(“:spring-context”))

    //ps:改完配置文件后,需要点击idea右下角的弹窗:use auto-import,或者直接在右侧的gradle中打开,右击项目会有一个Auto-Import的选项,勾上即可(如下第二张图)。开启自动导入,主要是方便修改依赖后无需手动Reimport。

在这里插入图片描述
在这里插入图片描述

  1. 写测试代码

    package com.dazhu.spring.config;
    /**
     * @Author: zwb
     * @Date: 2022/8/18
     * @Description:
     */
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    @Configuration
    @ComponentScan("com.dazhu.spring")
    public class AppConfig {
       //扫描ccom.dazhu.spring包下面的所有bean
    }
    
    package com.dazhu.spring.services;
    
    import org.springframework.stereotype.Service;
    
    /**
     * @Author: zwb
     * @Date: 2022/8/18
     * @Description:
     */
    @Service
    public class HelloService {
    	public void hello(){
    		System.out.println("hello,dazhu");
    	}
    }
    
    package com.dazhu.spring;
    
    import com.dazhu.spring.config.AppConfig;
    import com.dazhu.spring.services.HelloService;
    import org.springframework.context.annotation.AnnotationConfigApplicationContext;
    
    /**
     * @Author: zwb
     * @Date: 2022/8/18
     * @Description:
     */
    public class DazhuSpringApplication {
    	public static void main(String[] args) {
    		AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class);
    		HelloService helloService = ac.getBean(HelloService.class);
    		helloService.hello();
    	}
    }
    

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值