本文主要通过官网的源码搭建指引来进行 spring framework 源码分析环境的搭建,目录如下:

1、官方参考

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)环境搭建的更多相关文章

  1. Spring源码分析之环境搭建

    写在最前面 最近突然心血来潮,想看看源码,看看大牛都怎么码代码,膜拜下.首选肯定是spring大法,于是说干就干,从GitHub上下载spring-framework源码编译拜读. 环境搭建 安装JD ...

  2. Spring源码分析——调试环境搭建(可能是最省事的构建方法)

    1. 依赖工具 idea git jdk 1.8 + Gradle 2. 获取源码 从github https://github.com/spring-projects/spring-framewor ...

  3. 精尽Spring MVC源码分析 - 调式环境搭建

    该系列文档是本人在学习 Spring MVC 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释 Spring MVC 源码分析 GitHub 地址 进行阅读 Spring 版本:5.2. ...

  4. Spring源码分析_01_ idea搭建spring源码阅读环境

    二.参考资料 1.Intellij Idea如何导入spring源码

  5. Spring 源码学习之环境搭建

    一.下载Spring 源码 进入 https://github.com/spring-projects/spring-framework/tags 选择下载spring freamework的版本 h ...

  6. spring源码解析(一) 环境搭建(各种坑的解决办法)

    上次搭建spring源码的环境还是两年前,依稀记得那时候也是一顿折腾,奈何当时没有记录,导致两年后的今天把坑重踩了一遍,还遇到了新的坑,真是欲哭无泪;为了以后类似的事情不再发生,这次写下这篇博文来必坑 ...

  7. kibana5.6 源码分析以--环境搭建&技术准备

    Kibana是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的.你可以用kibana搜索.查看.交互存放在Elasticsearch索引里的数据,使用各种不同的图表.表格 ...

  8. 【Spring源码分析系列】搭建Spring实现容器的基本实现

    前言 bean是Spring中最核心的东西,因为Spring就像一个大水桶,而bean就像是容器中的水,先新建一个小例子来看一下: 一.使用eclipse构建项目,项目结构如下 二.类文件内容 < ...

  9. 【spring源码分析】IOC容器初始化(一)

    前言:spring主要就是对bean进行管理,因此IOC容器的初始化过程非常重要,搞清楚其原理不管在实际生产或面试过程中都十分的有用.在[spring源码分析]准备工作中已经搭建好spring的环境, ...

随机推荐

  1. redhat 7.6 常用命令

    cp 复制命令 diff  对比两个文件内容是否相同 cp -rvf  复制目录 r代表递归 v显示详细步骤 f强制 ls -ah   查看目录  a查看隐藏文件 h显示文件大小单位k less 逐行 ...

  2. 142、Java内部类之在普通方法里面定义内部类

    01.代码如下: package TIANPAN; class Outer { // 外部类 private String msg = "Hello World !"; publi ...

  3. 本周总结(19年暑假)—— Part6

    日期:2019.8.18 博客期:112 星期日

  4. Java中Comparator的使用

    在某些特殊情况,我们需要对一个对象数组或集合依照对应的属性排序:此时,我们就可以用Comparator接口处理. 上代码 TestComparaTo 类 package com.test.interf ...

  5. 十一 队列 Queue

    队列:  一种先进先出的数据结构  FIFO 数组队列的实现:

  6. LinkedList学习:API调用、栈、队列实现

    参考的博客 Java 集合系列05之 LinkedList详细介绍(源码解析)和使用示例 如果你想详细的区了解容器知识以及本文讲的LinkedList,我推荐你去看这篇博客和这个做个的容器系列 Lin ...

  7. SpringCloud实战——(2)通过Feign调用其他模块

    大型项目下往往有很多模块,ZCGL项目结构如下: 需要引用的其他模块已经发布成服务并在Eureka Server注册中心注册,如下: 写程序时引用了其他模块,并且其他模块在项目中,但是IDEA任然无法 ...

  8. Spring事务原理分析-部分一

    Spring事务原理分析-部分一 什么事务 事务:逻辑上的一组操作,组成这组操作的各个单元,要么全都成功,要么全都失败. 事务基本特性 ⑴ 原子性(Atomicity) 原子性是指事务包含的所有操作要 ...

  9. 还是应该立个flag

    6月份 开通博客的想法很简单,就是决定要学习C++和算法,写博客作为督促自己的一个方式,因为还没有系统的学习,自认为写博客或见解有些力所不及,决定先从自己的一篇随笔开始,因为我知道自己一旦开始,就会坚 ...

  10. SpringBoot 解决“不支持发行版本xx”的问题

    原因:很多地方都要配置jdk版本,某些地方配置的jdk版本不同.比如你要使用jdk8,某些地方配成了jdk7. 最常见配置错的地方:Ctrl+Shift+Alt+S 如果没问题,查看Project中的 ...