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的环境, ...
随机推荐
- sudo: gunicorn: command not found的问题
在阿里云的ubantu云服务器上,python3 通过pip安装gunicorn 在命令行运行gunicorn时提示找不到命令 可以删除已经安装的gunicorn 解决办法: which pip #找 ...
- 设计模式课程 设计模式精讲 9-2 原型模式coding
1 课堂演练 1.1 super.toString 作用 1.2 为什么要使用克隆方法呢 2 代码解析 2.1 代码解析1(使用原型模式之前) 2.2 代码解析2(使用原型模式默认方式(浅克隆)) 2 ...
- eclipse中使用maven创建项目JDK版本默认是1.5
1. 修改maven的settings.xml文件. 添加以下行,jdk版本改为自己需要的版本: <profile> <id>jdk-1.7</id> <ac ...
- php中读取大文件实现方法详解
php中读取大文件实现方法详解 来源: 时间:2013-09-05 19:27:01 阅读数:6186 分享到:0 [导读] 本文章来给各位同学介绍php中读取大文件实现方法详解吧,有需要了解 ...
- python 网络爬虫(三)
一.网站地图爬虫 在一个简单的爬虫中,我们将使用实例网站 robots.txt 文件中发现的网站地图来下载所有网站,为了解析网站地图,我们将会使用一个简单的正则表达式,从<loc>标签中提 ...
- D. Restore Permutation 树状数组+二分
D. Restore Permutation 题意:给定n个数a[i],a[ i ]表示在[b[1],b[i-1]]这些数中比 b[i]小的数的和,要你构造这样的b[i]序列 题解:利用树状数组 求比 ...
- redis学习笔记-01:redis简介
1.redis是一个高性能的Nosql数据库,遵守BSD协议,使用c语言编写.支持网络.可基于内存亦可持久化,是一种日志型.Key-Value数据库,也可看做是一个分布式的.基于内存的缓存工具. 2. ...
- 081、Java数组之数组传递
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...
- MAC电脑如何播放.SWF文件
很简单,不需要专门的播放器,只需要将.swf文件直接拖拽到浏览器页面就可以播放了. 亲测safari , 谷歌chrome浏览器,火狐浏览器 ,都是可以的 下面是图示 step1 电脑上找到swf文件 ...
- 如何使用Nexus搭建Maven私服
如何使用Nexus搭建Maven私服 听语音 | 浏览:47 | 更新:2016-09-29 10:22 1 2 3 4 5 6 7 分步阅读 一键约师傅 百度师傅最快的到家服务,最优质的电脑清灰! ...
