相关帖子有很多但是都不是最新的Gradle,我在使用Gradle最新版编译的时候简直坑死我了,弄了好久。接下来给大家详细说一下这个安装过程,以及相关的软件版本号。

相关软件、依赖的版本号:

  • Gradle gradle-7.2-bin.zip 该版本官网下载地址 或者自行选择版本 所有版本官网地址

    注意:如果要是自行选择版本,以下流程未必适用

  • JDK jdk-11.0.12_windows-x64_bin.exe 该版本官网下载地址

    注意:如果不使用JDK11,会报依赖错误 java: 程序包jdk.jfr不存在,反正JDK8是会报错,本人解决了很长时间都没有解决,有兴趣的话大家自行尝试。

  • Spring源码版本 5.3.x

  • 软件 ideaIU-2021.1.2.exe

相关软件介绍完毕,开始实操:

Spring阅读源码环境搭建

  1. 先从GithHub拉取项目,源码地址
https://github.com/spring-projects/spring-framework

如果要是GitHub网络太慢,可以先将代码fork到Gitee上,然后再进行拉取。

首先先登录Gitee,然后点击右上角加号的Import Repository

第一次操作,有可能需要Github和Gitee的权限验证,直接验证即可,出现以下界面:

然后按照下图操作

导入完成后直接去Gitee上拉取代码就行了。这里不在对clone做过多描述,我是使用IDEA进行拉取代码的:

首先先打开gitee的spring源码地址,Copy一下这个地址:如图

打开IDEA,找到Git,然后点击clone

点击完clone会出现如下界面,填写好复制的源码地址,选好本机存放的源码路径,点击clone.等待拉去完成。

clone完代码后,发现不是我们想要的版本,我们需要切换一下。注意有可能显示的版本不全,点击一下showmore即可,

然后按图操作:

切换完成之后,暂时就不用管源码了,先close project 。

接下来安装Gradle,首先先将软件包解压到你想放的位置。解压完成以后配置Gradle的环境变量,

打开系统的高级系统设置,然后修改环境变量,如图:

系统变量中增加两个属性分别是

GRADLE_HOME - 这个是你解压Gradle的路径
GRADLE_USER_HOME - 这个是存放Gradle的依赖包的路径

切记切记且其GRADLE_USER_HOME的名字不可以改。,不然与默认的配置文件不对应

配置好之后这边,打开Command,输入

gradle -v

出现如图所示的结果说明配置成功

然后打开Spring源码目录,找到gradlew.bat,打开cmd窗口,执行它。

等待出现如下界面,会出现build success的提示说明成功,

这还不算完,找到你spring的源码目录,找到这两个文件import-into-eclipse.mdimport-into-idea.md,这两个文件一个是针对eclipse,一个是针对IDEA的;本次讲解的是IDEA;打开对应的文件,找到step如图,执行对应的命令

./gradlew :spring-oxm:compileTestJava

windows下需要去掉./

gradlew :spring-oxm:compileTestJava

然后再到执行的gradlew.bat命令下的目录执行gradlew :spring-oxm:compileTestJava该命令,也就是spring源码目录。如图:

执行完成后,直到出现BUILD SUCCESSFUL则代表成功,

进行到这里,就已经离成功不远了。然后使用IDEA重新打开Spring源码项目。

打开方式:File->New->Project from Existing Sources 找到项目中的build.gradle如图所示:

最后idea会自动编译spring源码,编译成功以后,所有的模块都会有个小小的蓝色图标,表示编译成功,至此spring源码导入完成。接下来写一个测试类,测试一下。

点击项目目录 New->Moudle

选择Gradle JDK11 Java 点击Next: 如图

配置相关属性,项目名、包名、版本号等如图,点击Finish

接下来在新建的项目中的build.gradle中引入模块:spring-beans和,如图:

注意:

这里一定要写implementation 不要写其他的否侧会失败。版本不同,引入方式也不一样,本次的Gradle是7.2。

然后再main中创建一个测试Bean

如图:

然后再resource中床架一个spring的配置文件 ,将刚刚创建的Bean加载到spring容器中

配置文件的内容

<?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="com.vipbbo.spring.MyTestBean"/>
</beans>

接下来再test中创建测试类

测试类的内容如下:

@Test
public void Test(){
BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("spring-config.xml"));
MyTestBean myTestBean = (MyTestBean) beanFactory.getBean("myTestBean");
System.out.println(myTestBean.getName());
}

点击运行,出现以下结果代表创建完成了。

到这里,spring源码就大功告成了。

感兴趣的小伙伴可以微信搜索码上遇见你获取更多精彩内容。

全网最新最详细最明白教程之Spring源码搭建,没有之一,超详细的更多相关文章

  1. Qt StyleSheet皮肤css源码(黑色,超详细) 乌合之众 good

    使用方式如下 //设置皮肤样式 static void SetStyle(const QString &styleName) { QFile file(QString(":/imag ...

  2. spring源码干货分享-对象创建详细解析(set注入和初始化)

    记录并分享一下本人学习spring源码的过程,有什么问题或者补充会持续更新.欢迎大家指正! 环境: spring5.X + idea 建议:学习过程中要开着源码一步一步过 Spring根据BeanDe ...

  3. ArduinoYun教程之Arduino编程环境搭建

    ArduinoYun教程之Arduino编程环境搭建 Arduino编程环境搭建 通常,我们所说的Arduino一般是指我们可以实实在在看到的一块开发板,他可以是Arduino UNO.Arduino ...

  4. RabbitMQ基础教程之Spring&JavaConfig使用篇

    RabbitMQ基础教程之Spring使用篇 相关博文,推荐查看: RabbitMq基础教程之安装与测试 RabbitMq基础教程之基本概念 RabbitMQ基础教程之基本使用篇 RabbitMQ基础 ...

  5. 手把手教你启用Win10的Linux子系统(超详细)

    原文:手把手教你启用Win10的Linux子系统(超详细) 版权声明:转载请保留出处,谢谢! https://blog.csdn.net/zhangdongren/article/details/82 ...

  6. 16Aspx.com源码2014年7月详细

            Web电子商务网(三层)V2.0源码 2014-07-31   [VS2010] 源码介绍: Web电子商务网(三层)V2.0源码 源码描述: 一.源码特点     采用三层架构开发, ...

  7. 异步编程之co——源码分析

    异步编程系列教程: (翻译)异步编程之Promise(1)--初见魅力 异步编程之Promise(2):探究原理 异步编程之Promise(3):拓展进阶 异步编程之Generator(1)--领略魅 ...

  8. 并发编程之 Condition 源码分析

    前言 Condition 是 Lock 的伴侣,至于如何使用,我们之前也写了一些文章来说,例如 使用 ReentrantLock 和 Condition 实现一个阻塞队列,并发编程之 Java 三把锁 ...

  9. 并发编程之 ThreadLocal 源码剖析

    前言 首先看看 JDK 文档的描述: 该类提供了线程局部 (thread-local) 变量.这些变量不同于它们的普通对应物,因为访问某个变量(通过其 get 或 set 方法)的每个线程都有自己的局 ...

随机推荐

  1. .net core signalR 全局异常处理

    Hub的异常拦截 { } { } *:first-child { } *:last-child { } { } { } { } { } { } { } { } { } { } h6:first-chi ...

  2. C#多线程---线程池的工作者线程

    一.线程池简介 创建和销毁线程是一个要耗费大量时间的过程,太多的线程也会浪费内存资源,所以通过Thread类来创建过多的线程反而有损于性能,为了改善这样的问题 ,.net中就引入了线程池. 线程池形象 ...

  3. cmd进入pycharm所创建的虚拟环境

    进入cmd命令,进入虚拟环境所在文件夹.(pycharm每创建一个新项目就会创建一个虚拟环境,位于项目下venv下Script) E:\virtualenv\crawl1\Scripts>act ...

  4. 一招解决下载或下拉GitHub项目速度太慢的问题

    相信很多朋友都有过这样的体验,就是从Github上下载或clone别人的项目时特别慢,甚至还会出现链接意外终止的情况,那么今天就来给大家分享一个提速的方法,步骤也非常简单,亲测有效! 首先进入你的目标 ...

  5. 自建纯净谷歌搜索「GitHub 热点速览 v.21.35」

    作者:HelloGitHub-小鱼干 虽然 Google 搜索的结果不如百度搜索结果那般广告丛生,但是对于一心只想找到匹配结果的我们而言,推广的信息条目能免则免.whoogle-search 便是一个 ...

  6. IMO 2021 第 1 题拓展问题的两个极值的编程求解

    IMO 2021 第 1 题拓展问题的两个极值的编程求解 本篇是 IMO 2021 第一题题解及相关拓展问题分析 的续篇. 拓展问题三: (I). 求 n 的最小值,使得 n, n + 1, ..., ...

  7. C#多线程开发-线程同步 02

    上一篇文章主要带领大家认识了线程,也了解到了线程的基本用法和状态,接下来就让我们一起学习下什么是线程同步. 线程中异常的处理 在线程中始终使用try/catch代码块是非常重要的,因为不可能在线程代码 ...

  8. Linux常用命令(二)之权限管理、文件搜索、帮助、压缩命令及管道

    在(一)中提到过rwx的含义,但是我们还需深入理解,明白其真正的含义和权限,对于文件和目录,rwx权限是不同的,尤其是目录的权限往往是被忽略的: 对于目录,其权限和对应的操作: r-ls w-touc ...

  9. 超实用的idea技巧,windows技巧,用于节省时间!

    进去https://zhangjzm.gitee.io/self_study 找平常积累,或者其它的

  10. Windows内核-7-IRP和派遣函数

    Windows内核-7-IRP和派遣函数 IRP以及派遣函数是Windows中非常重要的概念.IRP 是I/O Request Pocket的简称,意思是I/O操作的请求包,Windows中所有Use ...