到了这个年纪,就应该阅读Spring源码了,源码阅读指南-编译加运行

news/2024/5/20 5:26:03 标签: spring, java, gradle

文章目录

  • 到了那个年纪,就应该阅读Spring源码了
    • 😄第一步,clone
    • 😆第二步,使用idea打开项目
      • 😊gradle介绍(插叙手法)
    • 😃第三步,修改gradle的远程仓库地址
      • 😏这里遇到了很多的坑(插叙手法)
    • 😍第四步,安装依赖
      • 😘脚本介绍(插叙手法)
    • 😚第五步,编译spring项目
    • 😳附赠内容(买一送一)
      • 😌在spring源码项目中新建项目验证我们的spring源码

到了那个年纪,就应该阅读Spring源码了

Spring的源码地址

https://github.com/spring-projects/spring-framework

😄第一步,clone

我们先把他clone下来

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

没梯子的话多clone几遍就好了

😆第二步,使用idea打开项目

在这里插入图片描述

我们这里使用5.x的版本

在这里插入图片描述

设置里面gradle设置按照如下图设置即可

在这里插入图片描述

gradle_29">😊gradle介绍(插叙手法)

由于Spring源码都是使用Gradle来管理项目

按理来说我们gradle和maven类似,需要在本级载好并且安装好

但是不建议这么做,因为很多项目的源代码都自带了wrapper包

在这里插入图片描述

这里面有我们的gradle的包,这样有利于我们统一得管理版本冲突问题

Gradle Wrapper 实际上就是对 Gradle 的一层包装,用于解决实际开发中可能会遇到的不同的项目需要不同版本的 Gradle 问题。
例如:把自己的代码共享给其他人使用,
可能出现如下情况:
1.对方电脑没有安装 gradle
2.对方电脑安装过 gradle,但是版本太旧了
这时候,我们就可以考虑使用 Gradle Wrapper 了。这也是官方建议使用 Gradle Wrapper 的原因。

gradle_50">😃第三步,修改gradle的远程仓库地址

springgradle的远程仓库是spring自己的远程仓库,但是我们是拉不下来jar包的,原因是最新的spring仓库添加了认证

我们拉包的时候会出现

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring root project 'spring'.
> Could not resolve all files for configuration ':classpath'.
   > Could not resolve org.apache.xerces:xercesImpl:2.9.1.
     Required by:
         project : > io.spring.gradle:docbook-reference-plugin:0.3.1
      > Could not resolve org.apache.xerces:xercesImpl:2.9.1.
         > Could not get resource 'https://repo.spring.io/plugins-release/org/apache/xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.pom'.
            > Could not GET 'https://repo.spring.io/plugins-release/org/apache/xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.pom'. Received status code 401 from server: Unauthorized
   > Could not resolve org.apache.xerces:resolver:2.9.1.
     Required by:
         project : > io.spring.gradle:docbook-reference-plugin:0.3.1
      > Could not resolve org.apache.xerces:resolver:2.9.1.
         > Could not get resource 'https://repo.spring.io/plugins-release/org/apache/xerces/resolver/2.9.1/resolver-2.9.1.pom'.
            > Could not GET 'https://repo.spring.io/plugins-release/org/apache/xerces/resolver/2.9.1/resolver-2.9.1.pom'. Received status code 401 from server: Unauthorized

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.


Received status code 401 from server: Unauthorized 无权限

在这里插入图片描述

所以我们需要改成阿里云的仓库地址

😏这里遇到了很多的坑(插叙手法)

在网上有很多的解决方法,解决方法无非就是

在这里插入图片描述

添加

https://maven.aliyun.com/repository/public

但是,其实我们上面的错误,并不是添加这个仓库就解决了

我们去看官网地址
https://developer.aliyun.com/mvn/guide

在这里插入图片描述

添加的仓库就是箭头所指的仓库,但是我们搜索一下这个jar包

在这里插入图片描述

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

public仓库其实是没有这个jar包的,所以找个寂寞。。。

我们要去spring-plugin仓库中去拉

在这里插入图片描述

打开build.gradle文件

在这里插入图片描述

找到configure(allprojects)

在这里插入图片描述

方法里面的repositories

在这里插入图片描述

添加阿里云的地址

		maven {
			url 'https://maven.aliyun.com/repository/spring-plugin'
		}
		maven {
			url 'https://maven.aliyun.com/repository/public/'
		}

😍第四步,安装依赖

😘脚本介绍(插叙手法)

在这里插入图片描述

gradlew与gradlew.bat执行的指定wrapper版本中的gradle指令,不是本地安装的gradle指令
gradlew:linux下的脚本
gradlew.bat: Windows下的脚本

 ./gradlew.bat dependencies

在这里插入图片描述

第一次可能较慢,出现build successful就说明安装完成

在这里插入图片描述

这个时候我们重新加载gradle项目即可

在这里插入图片描述

spring_167">😚第五步,编译spring项目

我们clean一下

在这里插入图片描述

然后

 ./gradlew.bat :spring-oxm:compileTestJava

在这里插入图片描述

编译成功后在各个模块有编译好的build文件夹

在这里插入图片描述

lib文件夹里面就是我们打好的jar包

在这里插入图片描述

这样就说明我们的源码环境已经完全配置好了

😳附赠内容(买一送一)

springspring_194">😌在spring源码项目中新建项目验证我们的spring源码

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

把src文件夹复制到spring-demo项目中(新建的项目如果为空的话,复制项目文件夹结构)

在这里插入图片描述

删掉多余的,自己新建文件包

在这里插入图片描述

添加 compile(project(":spring-context"))
意思是添加依赖spring-context

在这里插入图片描述

java">package com.masiyi;

import org.springframework.stereotype.Service;

/**
 * @Description TODO
 * @Author masiyi
 * @Date 2023/1/5
 **/
@Service
public class DemoService {
	public void hello() {
		System.out.println("hello spring");
	}
}


java">package com.masiyi;

import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Configuration;

/**
 * @Description TODO
 * @Author masiyi
 * @Date 2023/1/5
 **/
public class DemoStart {
	public static void main(String[] args) {
		ApplicationContext ac = new AnnotationConfigApplicationContext("com.masiyi");
		DemoService bean = ac.getBean(DemoService.class);
		bean.hello();
	}
}

运行即可

在这里插入图片描述


http://www.niftyadmin.cn/n/196973.html

相关文章

usb_cam 相机ROS配置

文章目录运行环境:1.1 usb_cam连接方式:1.2 ROS包下载和编译1.2 运行电脑自带cam1.3 修改launch文件1)不插入 usb_cam 编号查询2)插入 usb_cam 编号查询1.4 运行usb_cam2.1 Rviz显示运行环境: ubuntu20.04 noetic usb_cam 宏基暗影骑士笔记本…

【应用】AP5153 线性降压恒流 PWM调光LED照明驱动 高压低压

概述 AP5153 是一种 PWM 调光的、低压 差的 LED 线性降压恒流驱动器。 AP5153 仅需要外接一个电阻和一个 NMOS 管就可以构成一个完整的 LED 恒 流驱动电路,调节该外接电阻就可以调节 输出电流,输出电流可调范围为 20mA 到 3.0A。 AP5153 还可以通过在…

分布式事务 ~ seata。

分布式事务。 文章目录分布式事务。1. 分布式事务问题。1.1. 本地事务。1.2. 分布式事务。1.3. 演示分布式事务问题。2. 理论基础。2.1. CAP 定理。2.1.1. 一致性。2.1.2. 可用性。2.1.3. 分区容错。2.1.4. 矛盾。2.2. BASE 理论。2.3. 解决分布式事务的思路。3. 初识 Seata。3…

第二十二章 配置镜像 - 镜像配置指导原则

文章目录第二十二章 配置镜像 - 镜像配置指导原则第二十二章 配置镜像 - 镜像配置指导原则 为了提供强大、经济的HA解决方案,镜像设计为可适应各种系统配置和体系结构。但是,建议遵循以下一般配置准则: IRIS实例和平台兼容性-在确定要添加到…

[笔记]计算机基础 3 CSAPP Lab2-BombLab

BombLabs是CSAPP的第二个Lab,主要考察的是对于汇编的阅读能力。BombLab做起来其实并不难,大概花了大半天就能完成,但确实对于栈的理解会得到提升,并且深深的感受到循环、数组、链表的底层魅力。并且由于对Bomb的忌惮,你…

【Docker】Docker常规软件的安装

总体步骤 搜索镜像 拉取镜像 查看镜像 启动镜像 停止容器 移除容器 示例(安装mysql) 搜索镜像 docker search mysql[root192 ~]# docker search mysql NAME DESCRIPTION STARS OF…

【Redis】数据结构 - String

使用场景 Redis 的 String 是最基本、最简单的数据结构之一,也是 Redis 中应用最广泛的数据结构之一。String 数据结构可以存储字符串、整数或者浮点数,并支持一系列的操作方法,例如设置值、获取值、追加值、自增等。以下是 String 数据结构…

Spark 基础 RDD介绍

文章目录1. 什么是RDD?2. RDD五大特性2.1 RDD是有分区的2.2 RDD的方法会作用在其所有的分区上2.3 RDD之间是有依赖关系(血缘关系)2.4 Key-Value型的RDD可以有分区器2.5 RDD 的分区规则,会尽量靠近数据所在的服务器1. 什么是RDD&am…