【Mac】编译Spring 源码和Idea导入
今天我们开始Spring源码的阅读之旅。阅读Spring的源码的第一步当然是编译Spring源码。首先我们要去GitHub上将spring源码给clone下来。
笔者编译环境如下:
Spring版本:5.28
https://github.com/spring-projects/spring-framework/tree/v5.2.8.RELEASE
https://github.com/spring-projects/spring-framework/wiki/Build-from-Source
根据官网的编译文档可知我们需要的JDK版本
自行配置
根据源码路径
spring-framework\gradle\wrapper\gradle-wrapper.properties
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
#distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip
distributionUrl=file\:/Users/xxxx/Source/gradle-8.3/gradle-8.3-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
我们知道当前源码需要的gradle版本以及需要的gradle配置
下载对应的gradle
https://gradle.org/releases/
配置mac环境变量
GRADLE_USER_HOME=/Users/king/JavaLibrary/gradle-8.3
export GRADLE_USER_HOME
还需要在源码上方位置更换成本地gradle
distributionUrl=file\:/Users/xxxx/Source/gradle-8.3/gradle-8.3-bin.zip
进行编译
./gradlew build
发生如下错误
Caused by: org.gradle.jvm.toolchain.internal.NoToolchainAvailableException: No matching toolchains found for requested specification: {languageVersion=21, vendor=any, implementation=vendor-specific} for MAC_OS on x86_64.at org.gradle.jvm.toolchain.internal.JavaToolchainQueryService.downloadToolchain(JavaToolchainQueryService.java:180)at org.gradle.jvm.toolchain.internal.JavaToolchainQueryService.lambda$query$2(JavaToolchainQueryService.java:146)at org.gradle.jvm.toolchain.internal.JavaToolchainQueryService.query(JavaToolchainQueryService.java:146)at org.gradle.jvm.toolchain.internal.JavaToolchainQueryService.lambda$resolveToolchain$1(JavaToolchainQueryService.java:124)at org.gradle.jvm.toolchain.internal.JavaToolchainQueryService.resolveToolchain(JavaToolchainQueryService.java:122)at org.gradle.jvm.toolchain.internal.JavaToolchainQueryService.lambda$findMatchingToolchain$0(JavaToolchainQueryService.java:103)at org.gradle.api.internal.provider.DefaultProvider.calculateOwnValue(DefaultProvider.java:72)at org.gradle.api.internal.provider.AbstractMinimalProvider.calculateValue(AbstractMinimalProvider.java:108)at org.gradle.api.internal.provider.WithSideEffectProvider.calculateOwnValue(WithSideEffectProvider.java:54)at org.gradle.api.internal.provider.AbstractMinimalProvider.calculateValue(AbstractMinimalProvider.java:108)at org.gradle.api.internal.provider.TransformBackedProvider.calculateOwnValue(TransformBackedProvider.java:82)at org.gradle.api.internal.provider.AbstractMinimalProvider.calculateValue(AbstractMinimalProvider.java:108)at org.gradle.api.internal.provider.TransformBackedProvider.calculateOwnValue(TransformBackedProvider.java:82)at org.gradle.api.internal.provider.AbstractMinimalProvider.calculateValue(AbstractMinimalProvider.java:108)at org.gradle.api.internal.provider.AbstractMinimalProvider.withFinalValue(AbstractMinimalProvider.java:164)at org.gradle.api.internal.provider.DefaultProperty.finalValue(DefaultProperty.java:133)at org.gradle.api.internal.provider.DefaultProperty.finalValue(DefaultProperty.java:26)at org.gradle.api.interna
解决方案
找到项目中 spring-core文件夹中的spring-core.gradle文件中下面这行代码将21去掉即可!!!
修改前
multiRelease {targetVersions 17 , 21
}
修改后
multiRelease {targetVersions 17
}
如果遇到编译测试类错误,多次编译就好
eg:
最终会编译成功
执行下边命令
./gradlew :spring-oxm:compileTestJava
首先我们要对idea进行一些设置,具体如下
然后选择已存在的源进行导入
然后选中原来的项目。具体如下:
记住上面要选build.gradle文件,然后等待idea建立好缓存
这个时候我们需要修改如下的设置,具体如下:
然后我们需要修改运行的配置为idea运行,不然每次idea运行都会通过gradle去编译运行——gradle运行编译特别慢;需要改成idea自己编译运行。具体如下:
再次说明一下这里不是一定要改,但是如果你不改用默认的则会特别慢,改成idea快的不止一点点。
改完之后便可以建一个子model来测试了,但是一定得建gradle的项目,因为spring源码这个父项目就是用gradle来开发的
然后创建好添加以下的依赖。
api(project(":spring-context"))
然后开始开始完善项目的其他
配置类的代码
package com.ys;import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;@Configuration
@ComponentScan("com.ys")
public class AppConfig {
}
service的代码
package com.ys;import org.springframework.stereotype.Component;@Component
public class IndexService {
}
测试类的代码
package com.ys;import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class Main {public static void main(String[] args) {AnnotationConfigApplicationContext ac =new AnnotationConfigApplicationContext(AppConfig.class);System.out.println(ac.getBean(IndexService.class));}
}
然后点击运行。
可以看到我们Spring的源码就编译成功,同时测试也成功了。
相关文章:
![](https://img-blog.csdnimg.cn/ffe68a45f4a24675b858fefc541c728e.png)
【Mac】编译Spring 源码和Idea导入
今天我们开始Spring源码的阅读之旅。阅读Spring的源码的第一步当然是编译Spring源码。首先我们要去GitHub上将spring源码给clone下来。 笔者编译环境如下: Spring版本:5.28 https://github.com/spring-projects/spring-framework/tree/v5.2.8.RELEASE …...
![](https://img-blog.csdnimg.cn/229cfe889f124e1d9b6b9db6ee14331e.png#pic_center)
手把手教你用 ANSYS workbench
ANSYS Workbench ANSYS Workbench是一款基于有限元分析(FEA)的工程仿真软件。其基本概念包括: 工作区(Workspace):工程仿真模块都在此区域内,包括几何建模、网格划分、边界条件设置、分析求解等…...
![](https://img-blog.csdnimg.cn/8eb58e44c8f14385906e286b09dd9b1a.png)
Kotlin开发笔记:协程基础
Kotlin开发笔记:协程基础 导语 本章内容与书的第十五章相关,主要介绍与协程相关的知识。总的来说,本文将会介绍Kotlin中关于异步编程的内容,主要就是与协程有关。在Kotlin中协程是利用continuations数据结构构建的,用…...
![](https://www.ngui.cc/images/no-images.jpg)
自学设计模式(简单工厂模式、工厂模式、抽象工厂模式)
使用工厂模式来生产某类对象(代码简化且容易维护,类之间有血缘关系,可以通过工厂类进行生产); 简单工厂模式(用于创建简单对象) 对于简单工厂模式,需要的工厂类只有一个࿱…...
![](https://www.ngui.cc/images/no-images.jpg)
NFS:使⽤ NFS 为远程客户端提供共享文件系统
写在前面 分享一些 nfs 搭建的笔记考试顺便整理内容涉及 nfs 服务端客户端的搭建配置理解不足小伙伴帮忙指正 对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的&…...
![](https://www.ngui.cc/images/no-images.jpg)
2022-kaggle-nlp赛事:Feedback Prize - English Language Learning(超多注释讲解)
2022-kaggle-nlp赛事:Feedback Prize - English Language Learning 零、比赛介绍 比赛地址Feedback Prize - English Language Learning | Kaggle 0.1 比赛目标 写作是一项基本技能。可惜很少学生能够磨练,因为学校很少布置写作任务。学习英语作为第…...
![](https://img-blog.csdnimg.cn/8a6e9c1188934ae098dadc7d06d5cfc1.png)
第十三课 宾语从句
文章目录 前言一、宾语从句1、主语及物动词宾语从句2、主语双宾动词间接宾语直接宾语3、主语特定及物动词宾语从句(作宾语)宾补4、主语be某些形容词宾语从句5、动词不定式后面的宾语从句6、动名词后面的宾语从句7、介词后面的宾语从句9、间接引语 前言 一…...
![](https://img-blog.csdnimg.cn/af21713b969d41abbf61e457f94a99d2.png)
Docker容器与虚拟化技术:GitHub账户注册
目录 一、实验 1.GitHub 一、实验 1.GitHub (1)GitHub是一个面向开源及私有软件项目的托管平台,因为只支持Git作为唯一的版本库格式进行托管,故名GitHub。 (2)官网 GitHub: Let’s build from here …...
![](https://img-blog.csdnimg.cn/1df200cbc20041e984dc7abc20afbc64.png)
thinkphp安装workman
需要加版本,版本太高了不行 composer require topthink/think-worker1.0.*...
![](https://www.ngui.cc/images/no-images.jpg)
L1-036 A乘以B(Python实现) 测试点全过
题目 看我没骗你吧 —— 这是一道你可以在 10 秒内完成的题:给定两个绝对值不超过 100 的整数 A 和 B,输出 A 乘以 B 的值。 输入格式 输入在第一行给出两个整数 A 和 B ( − 100 ≤ A , B ≤ 100 ) A 和 B(−100≤…...
![](https://www.ngui.cc/images/no-images.jpg)
代码随想录第五十三天
代码随想录第五十三天 Leetcode 1143. 最长公共子序列Leetcode 1035. 不相交的线Leetcode 53. 最大子数组和 Leetcode 1143. 最长公共子序列 题目链接: 最长公共子序列 自己的思路:没想出来!!! 正确思路:首先这道题由于是涉及到了两个数组&…...
![](https://www.ngui.cc/images/no-images.jpg)
cmd - 如何在不重启的情况下让修改后的hosts生效
cmd - 如何在不重启的情况下让修改后的hosts生效 亲测有效 一般在修改了hosts文件后,需要重启电脑才能生效;其实可以不通过重启电脑也可以令其生效,方法如下: 打开cmd窗口输入ipconfig /flushdns,然后回车。…...
![](https://www.ngui.cc/images/no-images.jpg)
echarts实现双x轴并且分组滚动效果
var myChart echarts.init(document.getElementById(allOutPut1));var option {legend: {itemHeight: 10, // 图例icon高度itemWidth: 16, // 图例icon宽度icon:rect,//设置为矩形top:2%,right:10%,},tooltip: {trigger: axis,axisPointer: {type: shadow},textStyle: {fontS…...
![](https://img-blog.csdnimg.cn/a3f0a95b71c244788eb3834752a28bb8.png)
UE4 地形编辑基础知识 学习笔记
之前自己写过这样的功能,今天看到一个UE现成的 点击地形,选择样条 按住CTRL键点击屏幕中某一个点会在场景内生成一个这样的图标 再点两次,会生成B样条的绿线条 点击号再选择一个模型,会生成对应的链条状的mesh 拉高最远处的一个图…...
![](https://img-blog.csdnimg.cn/img_convert/3b6b89dbd94c2204f392b2c361bb384e.gif#pic_center)
AcWing算法提高课-5.5.2最大公约数
宣传一下 算法提高课整理 CSDN个人主页:更好的阅读体验 原题链接 题目描述 给定整数 N N N,求 1 ≤ x , y ≤ N 1 \le x,y \le N 1≤x,y≤N 且 gcd ( x , y ) \gcd(x,y) gcd(x,y) 为素数的数对 ( x , y ) (x,y) (x,y) 有多少对。 输入格式 输…...
![](https://www.ngui.cc/images/no-images.jpg)
Kubernetes-CKA考题详解
Kubernetes-CKA考题详解 考前须知:考试环境说明第一题:RBAC(4%)第二题:指定node设置为不可用(4%)第三题:升级kubernetes节点(7%)第四题:etcd备份还原(7%)第五题:创建NetworkPolicy(7%)第六题:创建svc(7%)第七题:创建ingress资源(7%)第八题:扩展deployme…...
![](https://img-blog.csdnimg.cn/0110b16b78ed4969999b10628f56c021.png)
不同版本.net引用同一个项目
项目文件.csproj文件内容如下: 重点是:不能有其他的 netstandard2;net40;net45;net46;net6 <Project Sdk"Microsoft.NET.Sdk"><PropertyGroup><TargetFrameworks>netstandard2;net40;net45;net46;net6</TargetFrame…...
![](https://img-blog.csdnimg.cn/img_convert/52985e894483f8775333ce92c524997c.webp?x-oss-process=image/format,png)
软件开发企业SDL安全培训案例
1.背景 随着计算机技术的发展、internet及mobile应用的普遍使用,软件安全像功能、性能、稳定性一样是计算机系统的一个非常重要部分。没有安全的软件,任何美好的功能都是徒劳的,没有安全的软件,公司的机密数据、客户隐私、系统的可靠性都得不到保障.如何有效评估、开发安全、可…...
![](https://www.ngui.cc/images/no-images.jpg)
ide-eval-resetter jar包下载、源码、使用介绍
如果你在找ide-eval-resetter插件,这里告诉你,2021.3版本开始该插件正式失效。 如果你安装的JB产品版本低于2021.3版本,你确定要找ide-eval-resetter,下面提供相关链接希望对你有帮助。 ide-eval-resetter源码: Githu…...
![](https://www.ngui.cc/images/no-images.jpg)
数据压缩算法一览
文章首发地址 Huffman编码: Huffman编码是一种基于字符频率的无损压缩算法。它将出现频率较高的字符用较短的编码表示,出现频率较低的字符用较长的编码表示,从而实现压缩。Lempel-Ziv-Welch (LZW): LZW是一种基于字典的无损压缩算…...
![](https://img-blog.csdnimg.cn/img_convert/89510d21e330abefae59ec9d5efd9274.png)
使用Rust开发命令行工具
生成二进制文件,将其扔到环境变量的path下即可~ 用rust打造实时天气命令行工具[1] 找到合适的API 使用该api[2] 如请求 api.openweathermap.org/data/2.5/weather?qBeijing&appidyour_key: { "coord": { "lon": 116.3972, "lat&quo…...
![](https://img-blog.csdnimg.cn/e8a04e84fe754048b65d358cf4d4b9d2.png)
CentOS中Oracle11g进程有哪些
最近遇到Oracle数据库运行过程实例进程由于某种原因导致中止的问题,专门看了下正常Oracle数据库启动后的进程有哪些,查阅资料了解了下各进程的作用,记录如下。 oracle 3032 1 0 07:36 ? 00:00:00 ora_pmon_orcl oracle …...
![](https://img-blog.csdnimg.cn/3e75a620e7d942eda55d4301978a4cf8.png)
WebRTC之FEC前向纠错协议
FEC前向纠错用于丢包恢复,对媒体包进行异或或其他算法生成冗余包进行发送。如果接收端出现丢包,可以通过冗余包恢复出原始的媒体包。FEC的代价是增加码率带宽,所以一般会根据网络状况、丢包率来动态调整FEC冗余系数,也会结合NACK/…...
![](https://img-blog.csdnimg.cn/a04a286764814986a179a6ea4a30b0cb.png)
软件测试技术分享丨使用Postman搞定各种接口token实战
现在许多项目都使用jwt来实现用户登录和数据权限,校验过用户的用户名和密码后,会向用户响应一段经过加密的token,在这段token中可能储存了数据权限等,在后期的访问中,需要携带这段token,后台解析这段token才…...
![](https://img-blog.csdnimg.cn/ae2a2da7fa22447495073dae6eb87dfb.jpeg)
GBU812-ASEMI逆变器专用整流桥GBU812
编辑:ll GBU812-ASEMI逆变器专用整流桥GBU812 型号:GBU812 品牌:ASEMI 芯片个数:4 封装:GBU-4 恢复时间:>50ns 工作温度:-55C~150C 浪涌电流:200A 正向电流&…...
![](https://www.ngui.cc/images/no-images.jpg)
D2007在64位Win7出现 delphi 2007 assertion failure thread32.cpp 的解决办法
Delphi2007 原来安装在Win7 下 运行正常, 自从升级到Win10 ,新建工程运行然后关闭报错, 报错信息如下: --------------------------- bds.exe - bordbk105N.dll --------------------------- Assertion failure: "(!"S…...
![](https://img-blog.csdnimg.cn/0c7aa01c8a414a97bab4f52a2434b1cf.png)
windows10 docker 安装在D盘
win10安装docker后发现c盘空间急速减少,360管家查看发现images镜像安装在C盘,于是重装docker desktop以为在安装过程中能够选择,遗憾的是没有提供选择权限,默认直接就安装到了c盘。 desktop 迁移 百度得知可以将c盘的docker安装…...
![](https://img-blog.csdnimg.cn/de4abfaac75942d1b3809301c8fbb78d.png)
Scikit-learn强化学习代码批注及相关练习
一、游戏介绍 木棒每保持平衡1个时间步,就得到1分。每一场游戏的最高得分为200分每一场游戏的结束条件为木棒倾斜角度大于41.8或者已经达到200分。最终获胜条件为最近100场游戏的平均得分高于195。代码中env.step(),的返回值就分…...
![](https://img-blog.csdnimg.cn/50eb5df75e6747558307a5727ec15d04.png)
执行jmeter端口不够用报错(Address not available)
执行jmeter端口不够用报错(Address not available) linux解决方案 // 增加本地端口范围 echo 1024 65000 > /proc/sys/net/ipv4/ip_local_port_range// 启用快速回收TIME_WAIT套接字 sudo sysctl -w net.ipv4.tcp_tw_recycle 1// 启用套接字的重用 sudo sysctl -w net.ipv4.…...
![](https://img-blog.csdnimg.cn/820684a17e5a467589cee27322d11749.gif)
【Go Web 篇】从零开始:构建最简单的 Go 语言 Web 服务器
随着互联网的迅速发展,Web 服务器成为了连接世界的关键组件之一。而在现代编程语言中,Go 语言因其卓越的性能和并发能力而备受青睐。本篇博客将带你从零开始,一步步构建最简单的 Go 语言 Web 服务器,让你对 Go 语言的 Web 开发能力…...
![](/images/no-images.jpg)
大连中山区网站建设/创建网页
获取当前方向一: adb shell "dumpsys input | grep SurfaceOrientation" # 纵向(正常状态:顺时针旋转0):SureaceOrientation 的值为 0 # 横向(顺时针旋转90)&#…...
![](/images/no-images.jpg)
武汉专业建站网/推广恶意点击软件怎样使用
假设有aViewController bViewController,如何判断当前View是哪个ViewController激活呢?我们使用如下的方法即可简单实现。 if([viewController isMemberOfClass:NSClassFromString("aViewController")]){//do something}if([viewController …...
![](/images/no-images.jpg)
查网站的建站系统/怎么做神马搜索排名seo
原标题:作为一名Java开发工程师需要掌握的专业技能在学习Java编程完之后,学员们面临的就是就业问题。作为一名Java开发工程师,企业在招聘的时候,也是有一定的标准的。为了帮助大家更好的找到适合自己的工作,上海尚观科…...
![](https://img-blog.csdnimg.cn/img_convert/05879cded6ceee92ae89fd60988c9b47.png)
ssm做的直播网站/北京网络营销推广培训哪家好
1080P实战利器搭建最近《使命召唤:战区》热度还在持续攀升,前段时间硬核写过一个关于这款游戏6000元的配置推荐,才没过一个星期,官方Twitter再次宣布玩家人数翻倍突破3000万,想起评论区有玩家反映最近装机成本太高&…...
![](https://img-blog.csdnimg.cn/2022010618485518335.png)
注册网站需要多久/南宁网站推广营销
默认占用:64M的内存 修改内存的方式: 1、某一类,右键选择--Run Configurations 2、选择--Arguments 3、在VM argments中输入内容,如:-Xmx80m 转载于:https://www.cnblogs.com/danyuzhu11/p/6180681.html...
![](/images/no-images.jpg)
正规专业的互联网代做毕业设计网站/美国搜索引擎浏览器
打开网址 http://idea.lanyus.com/ 选择获取注册码,复制生成的验证码 安装完成后,打开软件,依次选择菜单栏 Help -> Register-> Activation code ->输入复制验证码->确定完成。...