码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • MAC版Gradle构建Spring5.X源码阅读环境


    前言:

    三年前鄙人有幸在现已几乎报废的Window的DELL中搭建过Spring源码环境,今天,Mac版的搭建,来了。

    本篇文章环境搭建:Spring5.2.1 + Gradle5.6.3-all + jdk8 + IDEA2022.3版本

    文章目录

      • 1、Spring源码下载
      • 2、Gradle下载
      • 3、配置Gradle环境变量
      • 4、配置Gradle镜像等
      • 5、编译Spring源码
      • 6、新建自己的模块用来学习Debug源码
      • 7、编写Demo代码运行测试
      • 8、IDEA运行程序加快运行时间指南

    1、Spring源码下载

    官方下载spring源码
    https://github.com/spring-projects/spring-framework
    记得下载RELEASE版本!!!
    在这里插入图片描述

    2、Gradle下载

    gradle下载地址
    https://services.gradle.org/distributions/
    在这里插入图片描述

    3、配置Gradle环境变量

    终端运行

    open -e ~/.bash_profile
    
    • 1

    内容如下

    GRADLE_HOME=/Users/mr.guo/gradle-5.6.3
    export GRADLE_HOME
    export PATH=${PATH}:/Users/mr.guo/gradle-5.6.3/bin
    
    • 1
    • 2
    • 3

    刷新环境变量

    source ~/.bash_profile 
    
    • 1

    执行

     gradle -version
    
    • 1

    如下则成功
    在这里插入图片描述

    4、配置Gradle镜像等

    在这里插入图片描述

    打开build.gradle文件(这个就相当于是maven的pom文件),在文件头部加上如下两个地方

    在这里插入图片描述

    buildscript {
    	repositories {
    		maven { url "https://repo.spring.io/plugins-release" }
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    repositories {
    			//新增以下2个阿里云镜像
    			maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
    			maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter' }
    			mavenCentral()
    			maven { url "https://repo.spring.io/libs-spring-framework-build" }
    			maven { url "https://repo.spring.io/milestone" } // Reactor
    			//新增spring插件库
    			maven { url "https://repo.spring.io/plugins-release" }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    以上完成后刷新开始构建,等待一定时间后,如果构建失败重新refresh几次就行了,一般就是包下载超时之类的错误。

    以上只是Gradle下载依赖,如下才是真正的编译源码

    5、编译Spring源码

    在这里插入图片描述
    根据官方的import-into-idea.md文档可以得知,我们需要如下的操作
    在这里插入图片描述
    经过一段时间编译,每个人电脑的性能不一样,所需时间也不一样。

    编译过程中会出现好几次失败,非常正常,多刷新几次编译,不排除有别的异常确实需要自行goole解决。

    6、新建自己的模块用来学习Debug源码

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

    然后,需要手工添加spring-context,spring-beans,spring-core,spring-aop这4个核心模块

    在这里插入图片描述

    7、编写Demo代码运行测试

    在这里插入图片描述

    package demo;
    import org.springframework.stereotype.Service;
    
    @Service
    public class UserServiceImpl {
    	public void sayHiSpring(){
    		System.out.println("Hello Spring!");
    	}
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    package demo;
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.annotation.AnnotationConfigApplicationContext;
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    @ComponentScan("demo")
    public class MainStat {
    
    	public static void main(String[] args) {
    		ApplicationContext context=new AnnotationConfigApplicationContext(MainStat.class);
    		UserServiceImpl bean = context.getBean(UserServiceImpl.class);
    		bean.sayHiSpring();
    	}
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    完成如下:

    在这里插入图片描述
    end…

    8、IDEA运行程序加快运行时间指南

    如果是运行会打印很多Task,是因为默认是Gradle运行的,
    在这里插入图片描述
    需要如下设置:
    在这里插入图片描述

  • 相关阅读:
    重磅推出!CrownCAD 2023全功能试用通道已开启!
    游戏寻路算法:A星算法
    Linux-cut
    Windows server部署filebeat到kafka
    springboot使用Jersey客户端上传文件到服务器报错
    protobuf全局环境搭建
    前端工程化精讲第二十一课 容器方案:从构建到部署,容器化方案的优势有哪些?
    传送带 方法记录
    Redis经典问题:缓存穿透
    Vue-ref属性(脚手架获取DOM元素)、props配置、mixin混入、插件、scoped样式
  • 原文地址:https://blog.csdn.net/qq_44543508/article/details/133712883
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号