使用IDEA+gradle构建spring5源码-手把手教程全图解

一、准备

  • jdk1.8及以上

  • IDEA 2020.1

  • gradle-5.6.4

  • Spring-framework (5.2.x)

二、Spring源码本地构建

下载配置Gradle

1.下载地址

https://gradle.org/releases/

在这里插入图片描述

下载你所需要打版本。并解压到你需要存放的目录中。

2.配置环境变量

新建系统变量

在这里插入图片描述

path中添加信息

在这里插入图片描述

3.验证

cmd 查看gradle版本:

gradle -v

在这里插入图片描述

表明gradle 安装成功

下载Spring源码

spring源码是在GitHub上,为了下载速度,我们在码云上进行下载。

下载地址为:

https://gitee.com/mirrors/Spring-Framework/tree/5.2.x

在这里插入图片描述

选择分支,你可以下载zip包或者通过Git命令下载。

在这里插入图片描述

Git命令如下:

git clone -b 5.2.x https://gitee.com/mirrors/Spring-Framework.git

在这里插入图片描述

这里下载需要几分钟,请耐心等待。

修改配置

下面要所的就非常重点了。请认真查看,并配置,否则会导致编译失败。我们需要修改四个文件,请看截图:

在这里插入图片描述

最后一个修改的文件是在目录:…/spring-framework/gradle/wrapper/gradle-wrapper.properties

在这里插入图片描述

下面就分别说明这四个文件:

  • 第一个:修改settings.gradle 由于国外网站下载依赖速度非常慢,因此我们改成阿里云的maven仓库。

     maven { url "https://maven.aliyun.com/repository/public"}
    

    修改后如下图所示:

在这里插入图片描述

  • 第二个:修改 gradle.properties 文件

    version=5.2.13.BUILD-SNAPSHOT
    ## 设置此参数主要是编译下载包会占用大量的内存,可能会内存溢出
    org.gradle.jvmargs=-Xmx2048M
    ## 开启 Gradle 缓存
    org.gradle.caching=true
    ## 开启并行编译
    org.gradle.parallel=true
    

    修改之后如图:

在这里插入图片描述

  • 第三个:修改 build.gradle 文件 加上使用阿里云仓库,提高下载速度。

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

    修改之后的截图如下:

在这里插入图片描述

  • 第四个:gradle-wrapper.properties 编译是用自己下载后的gradle

    distributionBase=GRADLE_USER_HOME
    distributionPath=wrapper/dists
    # 注释掉从网络下载发行版的代码
    # distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-bin.zip
    # 添加本地已下载的发行版
    distributionUrl=file:///D:/Java/gradle-5.6.4-bin.zip
    zipStoreBase=GRADLE_USER_HOME
    zipStorePath=wrapper/dists
    

    修改后的截图如下:

在这里插入图片描述

准备构建

1.预编译spring-oxm 根据import-into-idea.md要求,导入idea之前,必须先进行spring-oxm和spring-core的预编译。进入spring-framework项目目录下,打开cmd使用命令如下:

./gradlew :spring-oxm:compileTestJava

执行命令和结果如下图:

在这里插入图片描述

说明: 如果中间出现错误,多执行几次,就能执行成功。

下面我把我遇到的错误都贴出来,仅供大家参考。

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

在这里插入图片描述

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

2.预编译 spring-core 使用命令如下:

./gradlew :spring-core:compileTestJava

执行后的截图如下:

在这里插入图片描述

预编译spring-core时,没有遇到错误,一次性成功。

至此,准备工作就完成了。接下来就是如何去导入到idea中,并对idea进行配置。

Idea导入Spring源码

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

在这里插入图片描述

2.选择spring-framework项目

在这里插入图片描述

3.选择使用gradle编译,点击finish。

在这里插入图片描述

4.这时候,idea就会进行编译,可以先取消编译。因为我们还需要做一些提高编译速度的配置。

File -> Settings -> Gradle

在这里插入图片描述

5.改为配置之后,你需要手动去点击重新编译。这个编译过程会很慢,需要耐心等待。

在这里插入图片描述

到这儿,使用idea+gradle构建spring5.2.x源码就已经全部完成。

三、验证

废了这么大的力气,终于构建完成了,写个简单的demo测试一下。

1.在spring-framework项目下,新建我们自己的测试module,如下图:

在这里插入图片描述

2.选择使用gradle

在这里插入图片描述

3.输入自己的module名称

在这里插入图片描述

4.因为要验证spring项目,所以我们创建的module要依赖spring模块,我们在刚刚创建的模块下build.gradle文件中修改使用阿里云仓库,同时依赖spring-context模块。

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

修改后,如图所示:
在这里插入图片描述

5.刷新依赖,重新编译,大概几分钟。

在这里插入图片描述

6.编写一个配置类

package com.hgs.spring.config;

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

@Configuration
@ComponentScan("com.hgs")
public class HgsConfig {
}

7.编写一个实体Bean

package com.hgs.spring.repository;

import org.springframework.stereotype.Repository;

@Repository
public class Hello {
	public void hello(){
		System.out.println("Hello,hgs!!");
	}
}

8.编写测试类,运行,如下图:

package com.hgs.spring;

import com.hgs.spring.config.HgsConfig;
import com.hgs.spring.repository.Hello;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class TestHelloBean {
	public static void main(String[] args) {
		AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(HgsConfig.class);
		Hello hello = ac.getBean(Hello.class);
		hello.hello();
	}
}

在这里插入图片描述

四、总结

本文所有内容都来自于本人亲自实践,如果对您实实在在有帮助,点赞就是最大的帮助,如果遇到构建过程中遇到任何问题,也欢迎留言告诉我,我看到后会第一时间帮你解答。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

h_and_g

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值