码农知识堂 - 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运行的,
    在这里插入图片描述
    需要如下设置:
    在这里插入图片描述

  • 相关阅读:
    芒果改进YOLOv5系列:首发结合最新NIPS2022华为诺亚的GhostNetV2 架构:长距离注意力机制增强廉价操作,打造高效轻量级检测器
    【web-攻击应用程序框架】(12.2)共享主机与服务提供商:攻击、保障
    大数据----数据仓库架构
    @PostConstruct 注解标记的类中,由于ApplicationContext还未加载,导致空指针
    HTTP值得深入学习的原因和HTTP学习的现状
    Android自定义View--Paint
    内网穿透的应用-不再依赖iCloud!利用群晖生态,自己掌控本地SSD的云存储!
    IOI2018 werewolf 狼人 题解
    2022年全国职业院校技能大赛赛项正式赛卷
    C++中静态成员和非静态成员
  • 原文地址:https://blog.csdn.net/qq_44543508/article/details/133712883
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号