美文网首页
使用IDEA+Gradle构建Spring5源码并调试

使用IDEA+Gradle构建Spring5源码并调试

作者: 庸人视角 | 来源:发表于2020-06-08 12:35 被阅读0次

    一、前言

      说一说我要写这篇文章的初衷吧,前段时间有小伙伴在微信群求教怎样构建spring源码,他在网上找了n个教程跟着后面花了两天时间都没构建好,正好我最近因工作原因从mac换成windows,开发环境要从零开始搭建和配置,想着也大概有一年多没看过Spring源码了,阅读Spring源码的好处我就不在此啰嗦了,我就借此机会写一篇构建Spring源码的过程,希望能让后面的朋友少走弯路,少踩坑。

      开始之前,先说一下我的电脑是新的,也就是所有开发工具和环境都是最新下载和配置的,另外我是科学上网的,没使用梯子走捷径,也就是说本文的源码构建速度是在正常使用网络情况下,我自己达到的最佳速度,不代表任何人。本文使用到的开发工具及版本说明如下:

    • IntelliJ IDEA 2020.1
    • gradle-6.4.1
    • Spring-framework最新版(5.3.0-SNAPSHOT)

      现在,让我们正式开始Spring源码的构建之旅。

    二、Spring源码构建之旅

    下载配置Gradle

      这个不是本文的重点又比较简单,你得靠自己先去配置好,如果你实在不会,在文章后面留言,我下次专门给你们写这个教程。

    下载Spring源码

    1、在github上下载Spring最新版源码,如下图所示:


    github下载spring源码

    2、下载完成以后解压到你自己本地文件夹。


    解压到本地文件夹

      我知道因为不可描述原因,大家下载gradle和spring源码可能比较耗时间,所以我把下载好的放在网盘了,需要的可以自己下载:
    Spring5源码直通车 提取码:srbm

    修改配置

      重点来了,下载好源码以后,我们要开始源码构建了,在构建之前,我们先打开spring-framework-master,看我截图的四个文件。下面来一一说明。

    配置说明
    1、import-into-idea.md:这是官方提供的spring源码导入idea的步骤和注意说明,我已经翻译过了,可以移步:IDEA导入Spring源码调试必看

    2、修改settings.gradle文件,下载依赖的网络速度之不可描述原因,懂得人都懂,我们加上阿里云的maven仓库。

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

    修改好之后如下图所示:


    settings.gradle修改

    3、修改gradle.properties文件,我都加了详细注释

    version=5.3.0-SNAPSHOT
    ## 设置此参数主要是编译下载包会占用大量的内存,可能会内存溢出
    org.gradle.jvmargs=-Xmx2048M
    ## 开启 Gradle 缓存
    org.gradle.caching=true
    ## 开启并行编译
    org.gradle.parallel=true
    ## 启用新的孵化模式
    org.gradle.configureondemand=true
    ## 开启守护进程 通过开启守护进程,下一次构建的时候,将会连接这个守护进程进行构建,而不是重新fork一个gradle构建进程
    org.gradle.daemon=true
    

    修改好之后如下图所示:


    gradle.properties描述

    4、修改build.gradle文件,加上使用阿里云仓库,提高下载速度。

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

    修改好之后如下图所示:


    在这里插入图片描述

    准备构建

    1、再次为了证明我是从零开始的,我把gradle的仓库依赖截图给大家看,gradle的本地仓库依赖位置是C:\Users\admin.gradle\caches\modules-2\files-2.1或者D:\work\tools\gradle\gradle-6.4.1\caches\modules-2\files-2.1,具体位置看你自己的设置。我的仓库现在是空的,没有任何下载好的依赖,截图如下:

    gradle仓库依赖
    2、预编译spring-oxm,根据import-into-idea.md要求,我们需要先预编译spring-oxm和spring-core,使用命令./gradlew :spring-oxm:compileTestJava,构建速度和截图如下:
    在这里插入图片描述
    3、同上,预编译spring-core,使用命令./gradlew :spring-core:compileTestJava,如下图所示:
    在这里插入图片描述
      至此,准备工作就完成的差不多了,接下来我们需要导入到IDEA,继续往下看。


    IDEA导入Spring源码

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


    在这里插入图片描述

    2、选择spring-framework-master项目


    在这里插入图片描述
    3、选择使用gradle编译,点击finish。
    在这里插入图片描述

    4、可以发现IDEA会自动开始构建编译spring源码。


    在这里插入图片描述
    5、不要着急,还有最后一步,选择File -> Settings -> Gradle,如下图所示调整:
    在这里插入图片描述
    6、去给对象问候一声,或者去抽根烟(吸烟有害健康),或者远处眺望一会,稍安勿躁,等回来时发现,不要网上说的一个小时、40分钟、20分钟,只要8m22s就完成Spring源码的构建编译工作,怎么样?还可以吧?
    在这里插入图片描述
    补充,这是另一个小伙伴按照我的方法后构建速度,9m3s。
    在这里插入图片描述
      到这儿,使用IDEA+Gradle构建Spring5源码就已经全部完成。

    三、验证

      实践是检验真理的唯一标准,那么怎样验证我们上面的构建是否成功呢,很简单,写个demo测试一下就好了,下面进入验证过程。

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


    在这里插入图片描述

    2、选择使用gradle


    在这里插入图片描述
    3、输入自己的module名
    在这里插入图片描述

    4、既然要验证,那我们肯定需要依赖spring的模块,我们在我们刚刚新建的模块下build.gradle文件中修改使用阿里云仓库,同时依赖spring-context模块。

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

    修改后如下如所示:


    在这里插入图片描述

    5、刷新依赖,重新编译,速度同样飞快。


    在这里插入图片描述

    6、我们先写一个配置类

    package com.mazhichu.spring.config;
    
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    /**
    * @ClassName: MazhichuConfig
    * @Description: 配置
    * @Author: Moore
    * @Date: 2020-06-08 12:30
    * @Version: V1.0
    */
    @Configuration
    @ComponentScan("com.mazhichu")
    public class MazhichuConfig {
    }
    
    

    7、写一个实体Bean

    package com.mazhichu.spring.repository;
    
    import org.springframework.stereotype.Repository;
    /**
    * @ClassName: Hello
    * @Description: bean
    * @Author: Moore
    * @Date: 2020-06-08 12:30
    * @Version: V1.0
    */
    @Repository
    public class Hello {
        public void hello(){
            System.out.println("Hello,ma_zhichu!");
        }
    }
    
    

    8、编写测试类,运行,如下图所示:


    在这里插入图片描述

    总结

    至此,使用IDEA+Gradle构建Spring5源码并简单调试的教程就到这儿,本文所有内容都来自本人亲自实践,如果对你实实在在有帮助,点赞就是最大的鼓励,如果你在构建过程中遇到任何问题,也欢迎留言告诉我,我看到后会第一时间帮你解答。如果您期待更好的文章,也欢迎关注“码之初”,谢谢!

    相关文章

      网友评论

          本文标题:使用IDEA+Gradle构建Spring5源码并调试

          本文链接:https://www.haomeiwen.com/subject/ibmltktx.html