Spring源码分析——(001)环境搭建
本文主要通过官网的源码搭建指引来进行 spring framework 源码分析环境的搭建,目录如下:
1、官方参考
- spring-framework的github链接:https://github.com/spring-projects/spring-framework
- 源码环境搭建官方参考1:考如何构建源码,Build from Source:https://github.com/spring-projects/spring-framework/wiki/Build-from-Source
- 源码环境搭建官方参考2:源码如何导入eclipse,import-into-eclipse:https://github.com/spring-projects/spring-framework/blob/master/import-into-eclipse.md
- 源码环境搭建官方参考3:源码如何导入idea,import-into-idea:https://github.com/spring-projects/spring-framework/blob/master/import-into-idea.md
2、开发环境和构建工具
Spring Framework 使用的是 Gradle 进行构建的,阅读源码需要先安装 Gradle。以下是笔者阅读源码用到的开发环境和工具清单:
- Gradle 5.6.2
- git 2.23.0.windows.1(Git for Windows)
- jdk 1.8.0_111
- IntelliJ IDEA 2019.1 or Eclipse(本次使用IDEA)
- win 10
3、源码准备
首先建议将官方仓库 https://github.com/spring-projects/spring-framework Fork到自己的 github 仓库中,因为后续阅读和调试源码的过程中,可能会有一些注释,甚至是代码改动等等,都可以自由提交到自己的仓库中,到哪都可以看,也不用担心丢失的问题。
注:这里记录的时间是 2019-12-08 周日,Spring 的版本已经到 5.2.2.RELEASE 了(2019-12-03 正式 release)。
拉取代码到本地:
- 由于已经 Fork 到自己的仓库,笔者这里从自己的仓库中拉取:git clone git@github.com:wpbxin/spring-framework.git
- 如果想拉取最新的代码,使用官方仓库拉取:git clone git@github.com:spring-projects/spring-framework.git
4、通过命令行进行构建
为了编译、测试和构建所有的 jars, distribution zips, 和 docs,linux下在 spring-framework 项目的根目录下使用命令:
./gradlew build
笔者使用的 win10,命令:
gradlew.bat build
看到有输出 BUILD SUCCESSFUL 就基本OK了

构建的过程比较慢,有很多的依赖包需要下载,并且需要运行所有的测试,请耐心等待。笔者的渣渣网络,第一次构建时用了一个半小时,囧。。。

也可以使用 -a 参数和 :project 前缀 进行单个模块进行的构建和测试,例如,只对 spring-webmvc 进行构建和测试:
linux 命令:
./gradlew -a :spring-webmvc:test
win10 命令:
gradlew.bat -a :spring-webmvc:test

Gradle 的jar 包缓存在 $HOME\.gradle,win10 的是 C:\Users\用户名\.gradle 。可以使用下面的命令将 spring-frame 依赖的 jar 包转移到本地的 maven 仓库中:
linux 命令:
./gradlew publishToMavenLocal -x javadoc
win10 命令:
gradlew.bat publishToMavenLocal -x javadoc

如果是之前版本的 spring framework,比如 5.1.x 或者更早的,使用命令
linux 命令:
./gradlew install -x javadoc
win10 命令:
gradlew.bat install -x javadoc
(以上2019-12-08 周日 记录)
5、导入到 IDEA
(2019-12-09 周一 续)
5.1 预编译 spring-oxm
linux 命令:./gradlew :spring-oxm:compileTestJava
win10 命令:gradlew.bat :spring-oxm:compileTestJava
看到 BUILD SUCCESSFUL 就说明成功了

5.2 导入idea
File -> Import Project -> Import project from external model 选择 Gradle,然后下一步,接着导入

然后就是自动编译,最后基本OK:

Spring源码分析——(001)环境搭建的更多相关文章
- Spring源码分析之环境搭建
写在最前面 最近突然心血来潮,想看看源码,看看大牛都怎么码代码,膜拜下.首选肯定是spring大法,于是说干就干,从GitHub上下载spring-framework源码编译拜读. 环境搭建 安装JD ...
- Spring源码分析——调试环境搭建(可能是最省事的构建方法)
1. 依赖工具 idea git jdk 1.8 + Gradle 2. 获取源码 从github https://github.com/spring-projects/spring-framewor ...
- 精尽Spring MVC源码分析 - 调式环境搭建
该系列文档是本人在学习 Spring MVC 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释 Spring MVC 源码分析 GitHub 地址 进行阅读 Spring 版本:5.2. ...
- Spring源码分析_01_ idea搭建spring源码阅读环境
二.参考资料 1.Intellij Idea如何导入spring源码
- Spring 源码学习之环境搭建
一.下载Spring 源码 进入 https://github.com/spring-projects/spring-framework/tags 选择下载spring freamework的版本 h ...
- spring源码解析(一) 环境搭建(各种坑的解决办法)
上次搭建spring源码的环境还是两年前,依稀记得那时候也是一顿折腾,奈何当时没有记录,导致两年后的今天把坑重踩了一遍,还遇到了新的坑,真是欲哭无泪;为了以后类似的事情不再发生,这次写下这篇博文来必坑 ...
- kibana5.6 源码分析以--环境搭建&技术准备
Kibana是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的.你可以用kibana搜索.查看.交互存放在Elasticsearch索引里的数据,使用各种不同的图表.表格 ...
- 【Spring源码分析系列】搭建Spring实现容器的基本实现
前言 bean是Spring中最核心的东西,因为Spring就像一个大水桶,而bean就像是容器中的水,先新建一个小例子来看一下: 一.使用eclipse构建项目,项目结构如下 二.类文件内容 < ...
- 【spring源码分析】IOC容器初始化(一)
前言:spring主要就是对bean进行管理,因此IOC容器的初始化过程非常重要,搞清楚其原理不管在实际生产或面试过程中都十分的有用.在[spring源码分析]准备工作中已经搭建好spring的环境, ...
随机推荐
- 设计模式课程 设计模式精讲 16-2,3 代理模式Coding-静态代理-1
1 代码演练 1.1 代码演练1(静态代理之分库操作) 1 代码演练 1.1 代码演练1(静态代理之分库操作) 需求: 订单管理,模拟前置后置方法,模拟分库管理 重点: 重点看订单静态代理,动态数据源 ...
- (转)jquery.validate插件的使用
JQuery Validate使用总结:一.导入js库<script src="../js/jquery.js" type="text/javascript&quo ...
- 排序--选择排序Selection Sort Java实现
基本原理 选择排序的简单原理:选择排序算法通过从未排序部分重复查找最小元素(考虑升序)并将其放在开头来对数组进行排序. 将数组两个子数组: 已排序子数组 未排序子数组 选择排序中每次循环都会从未排序子 ...
- BUU re xor
从13行和18行的0x21(c规定十六进制必须用0x**表示)可以知道这个字符串就是33个字符 shift+e来提取出数组中的字符: 设这个数组是global数组 global[] = { 102, ...
- 使用c#调用API入门
使用C#调用windows API入门 一:入门,直接从 C# 调用 DLL 导出 其实我们的议题应该叫做C#如何直接调用非托管代码,通常有2种方法: 1. 直接调用从 DLL 导出的函数. 2 ...
- C# Stream篇(三) -- TextWriter 和 StreamWriter
TextWriter 和 StreamWriter 目录: 为何介绍TextWriter? TextWriter的构造,常用属性和方法 IFormatProvider的简单介绍 如何理解StreamW ...
- rar 配合 python 实现 excel密码保护 破解
基本流程为,将excel 格式 改为rar, 然后用rar软件打开, 将 xl -> worksheet -> sheet*.xml 做下修改, 把sheet*.xml 里面的密码保护字段 ...
- Python学习第七课——集合(set) 和 字符串拼接
集合(set) # 2 无序 # 3 集合中元素必须是不可变类型 # 定义集合 s = {1,2,3,4,5} print(s) # 输出结果 {1, 2, 3, 4, 5} # 1 集合由不同元素组 ...
- tomcat web服务的搭建
在安装tomcat之前必须安装jdk 安装配置jdk 1.查看虚拟机中是否已安装java包 # rpm -qa | grep java 如果查找已安装java包,先卸载全部的openjdk #rpm ...
- There is no Action mapped for action name hello.
