Spring源码完美导入IDEA的过程
作者:阿Q 发布时间:2023-05-13 14:11:50
小伙伴私信我说想要研究下Spring的源码,想让我出一期教程来实现IDEA导入Spring源码,今天它来了~
版本 :IDEA 2020.2.3 ;Spring 5.0.x ;gradle 4.4.1 ;
先从github上面把 spring 源码下载下来并解压:
切记:解压完成后不要直接用IDEA 打开,因为Spring 的源码是用 gradle 构建的。如果已经用IDEA 打开了请删除后重新解压。
我们找到文件夹
spring-framework-5.0.x\gradle\wrapper
下的 gradle-wrapper.properties 文件,查看里边的 gradle 版本,去官网下载。
下载完成之后把 gradle 的环境变量配置一下,可以用gradle -version 来验证 gradle 是否配置成功
在 USER_HOME/.gradle/ 下面新建 init.gradle 文件,将国外源换成国内镜像
allprojects {
repositories {
def REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public/'
all { ArtifactRepository repo ->
if(repo instanceof MavenArtifactRepository){
def url = repo.url.toString()
if(url.startsWith('https://repo1.maven.org/maven2/')||url.startsWith('https://jcenter.bintray.com/')){
project.logger.lifecycle "Repository ${repo.url} replaced by $REPOSITORY_URL."
remove repo
}
}
}
maven {
url REPOSITORY_URL
}
}
}
在 spring-framework-5.0.x 下打开git 的窗口执行以下命令
./gradlew :spring-oxm:compileTestJava
该命令的作用是将 spring 转成IDEA 可以导入的工程结构。
如果你新开的 Windows 的 dos 窗口,先进入源码的目录文件夹,执行命令不用加前面的./
配置 IDEA 中的 gradle
使用 File -> open 把 Spring 工程导入到 IDEA中,并等待 jar 下载完成。
如遇报错信息:
在 build.gradle 中添加
maven { url "http://maven.aliyun.com/nexus/content/groups/public"}
其目的就是为了换成国内的镜像(init.gradle 有时没有生效)
编译时报错如下:
原因是 gradle 和 gradle 插件版本过旧,更换更高的版本可以解决,但这个问题只是提示,不影响编译。
在 test 包中随便找了一个单元测试运行,成功运行
来源:https://developer.51cto.com/article/700652.html


猜你喜欢
- 1 概念和原理一般的字符串匹配算法都是匹配一个子串,例如KMP、Trie,那么如果同时匹配多个子串呢?此时就需要用到AC自动机了。AC自动机
- 根据约定,在使用java编程的时候应尽可能的使用现有的类库,当然你也可以自己编写一个排序的方法,或者框架,但是有几个人能写得比JDK里的还要
- 一、概述在软件开发中,有些对象由于创建成本高、访问时需要与其它进程交互等原因,直接访问会造成系统速度慢、复杂度增大等问题。这时可以使用代理模
- Parcelable优点:google专门为安卓写的序列化接口性能好,内存开销小,效率高,写起来复杂缺点:各个机型可能有差异,Parcela
- 不好意思哦,上一篇Android自学开发第六篇代码控制界面挖了个坑,如果运行不起来的同学,请注意查看本篇文章。Android Project
- 本文实例为大家分享了Android实现中国象棋游戏的具体代码,供大家参考,具体内容如下实现环境: android studio
- 最近经常有人问Spring Cloud Feign如何上传文件。有团队的新成员,也有其他公司的兄弟。本文简单做个总结——早期的Spring
- springboot启动失败的问题springboot版本是1.3.0.M1,连接的mysql版本为8,用spring-boot-start
- 一、分布式锁介绍分布式锁主要用于在分布式环境中保护跨进程、跨主机、跨网络的共享资源实现互斥访问,以达到保证数据的一致性。二、架构介绍&nbs
- 通常在C#的实际开发过程中,会发现设置其属性ScriptErrorsSuppressed无法达到屏蔽脚本错误效果,但是可以通过下面两种方式实
- Spring开启注解AOP的支持放置的位置放在springmvc的aop,需要在springmvc的配置文件中写开启aop,而不是sprin
- 题目描述BM99 顺时针旋转矩阵描述 有一个NxN整数矩阵,请编写一个算法,将矩阵顺时针旋转90度。 给定一个NxN的矩阵,和矩阵的阶数N,
- 一、简介 1、地图 地图展示:普通地图(2D,3D)、卫星图和实时交通图。 地图操作:可通过接口或手势控制来实
- 输出为MP4需要用到ffmpeg相关的文件,我打包的库已经带了,去官网找的库可以在这个目录找到:2:添加这些引用:3:两个全局变量://用来
- 本文实例讲述了Android编程实现AlertDialog自定义弹出对话框的方法。分享给大家供大家参考,具体如下:弹出对话框,显示自定义的布
- 一、SpringBoot中的main方法注入service在springboot中使用main方法常规无法注入service,因为以后也可能
- 一、摘要本篇阐述基于TCP通信协议的异步实现。二、实验平台Visual Studio 2010三、异步通信实现原理及常用方法3.1 建立连接
- 一、牵出缓存都有哪些缓存,作用是什么,为什么这么设计1.缓存还在屏幕内的ViewHolder——Sc
- 窗口之间通信无非有两个方向,主窗口发送数据到副窗口,副窗口发送数据到主窗口。代码在最下面,先看一下解决的思路。首先是简单的主窗口传数据到副窗
- 微信的图片下拽返回功能在日常使用中非常方便,同时在很多 App 中都见到了类似的设计,可以说一旦习惯这种操作再也回不去了。这几天逛 GitH