想对spring框架进行深入的学习一下,看看源码,提升和沉淀下自己,工欲善其事必先利其器,还是先搭建好开发环境吧。

环境搭建

sping源代码之前是svn管理,如今已经迁移到了github中了。新版本号基于gradle构建项目。所以构建sping源代码环境必须先安装github以及Gradle.
当然了假设不想安装githubclient能够直接去git下载项目:spring中git地址https://github.com/spring-projects/spring-framework

安装github

首先去github官网下载安装包。我用的window环境下载地址:https://desktop.github.com/下载之后双击安装就可以,操作比較傻瓜式。


安装Gradle

Gradle是一个基于Apache Ant和Apache Maven概念的项目自己主动化建构工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置。
面向Java应用为主。当前其支持的语言限于Java、Groovy和Scala。计划未来将支持很多其它的语言。下载地址:http://gradle.org/gradle-download/,下载之后将文件解压配置环境变量例如以下图所看到的:
  1. 加入GRADLE_HOME F:\gradle-all\gradle-1.6依据自己的文件文件夹配置。

  2. 加入变量到path中。(这个不用说加入非常easy吧)

Gradle文件夹结构例如以下图所看到的:


測试是否成功安装:
win+R 进入cmd模式输入命令:gradle -version假设成功安装 出现下图gradle
版本号信息:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

下载spring(假设没有安装githubclient能够依照以下的github地址直接下载就可以)

spring git地址为:https://github.com/spring-projects/spring-framework能够直接下载下来防止命令clone比較慢。例如以下图所看到的:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">


打开github或者直接进入gitsehll命名 我的建立在I盘springok文件里
进入springok文件 右键 git bash打开git命名行例如以下图: 

输入命令:git clone https://github.com/spring-projects/spring-framework
例如以下图所看到的:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

耐心等待吧,比較慢。。
下载完毕之后命令界面例如以下图所看到的:

下载完毕之后 看下下载的文件夹吧:

ok了,可是默认的这样的方式并非eclipse项目,我们还须要将源代码转化为eclipse项目。

编译的时候比較慢,由于项目须要的jar包可能须要从网络下载。(我第一次下载编译了4个小时终于搞定)最好能FQ防止下载不下来。

怎么编译呢,进入下载的文件夹打开cmd控制台输入 gradle
cleanidea eclipse 開始编译成功之后会提示的,耐心等待吧。

我的project地址是I:\springok\spring-framework
操作过程例如以下:
  1. 进入当前的文件夹:
  2. 命令编译命令为:gradle cleanidea eclipse
编译成功了 成功转化为eclipse项目。
编译可能遇到的问题:
spring编译错误可能出现的错误:
  1. 提示build.gradle 配置文件错误,解决的办法哪里提示错误把哪行凝视或者删除就可以(大部分原因由于test測试错误去掉不用測试就可以)例如以下图所看到的:
  2. spring3X系列须要jdk5以上版本号,spring4X编译须要jdk8版本号。依据自己编译的版本号决定。
  3. jar包一直卡着下载不下来(可能网络不好最好能FQ)

导入eclipse

批量导入到eclipse后假设出现感叹号或者错误。可能依赖的项目还没有编译缺少那个就编译那个吧,全部依赖的项目编译通过。这个编译的项目也通过。
终于效果:

ok大功告成,开启我们的spring源代码学习之旅吧。加油奋斗。




spring源代码系列(一)sring源代码编译 spring源代码下载 spring源代码阅读的更多相关文章

  1. Spring Cloud 系列之 Config 配置中心(三)

    本篇文章为系列文章,未读前几集的同学请猛戳这里: Spring Cloud 系列之 Config 配置中心(一) Spring Cloud 系列之 Config 配置中心(二) 本篇文章讲解 Conf ...

  2. Spring AOP 系列总括

    Spring有两大核心,IOC和AOP.IOC在Java Web项目中无时无刻不在使用,然而AOP用的比较少,尤其是对一些初级程序员,在架构师搭好的框架上开发应用代码,AOP几乎是透明的.然而,项目中 ...

  3. 国内最全的Spring Boot系列之二

    历史文章 <国内最全的Spring Boot系列之一> 视频&交流平台 SpringBoot视频:http://t.cn/R3QepWG Spring Cloud视频:http:/ ...

  4. Spring Cloud 系列之 Spring Cloud Stream

    Spring Cloud Stream 是消息中间件组件,它集成了 kafka 和 rabbitmq .本篇文章以 Rabbit MQ 为消息中间件系统为基础,介绍 Spring Cloud Stre ...

  5. Spring Cloud 系列之 Gateway 服务网关(三)

    本篇文章为系列文章,未读第一集的同学请猛戳这里: Spring Cloud 系列之 Gateway 服务网关(一) Spring Cloud 系列之 Gateway 服务网关(二) 本篇文章讲解 Ga ...

  6. Spring Cloud 系列之 Gateway 服务网关(四)

    本篇文章为系列文章,未读第一集的同学请猛戳这里: Spring Cloud 系列之 Gateway 服务网关(一) Spring Cloud 系列之 Gateway 服务网关(二) Spring Cl ...

  7. Spring Cloud 系列之 Sleuth 链路追踪(三)

    本篇文章为系列文章,未读前几集的同学请猛戳这里: Spring Cloud 系列之 Sleuth 链路追踪(一) Spring Cloud 系列之 Sleuth 链路追踪(二) 本篇文章讲解 Sleu ...

  8. Spring Cloud 系列之 Consul 配置中心

    前面我们已经学习过 Spring Cloud Config 了: Spring Cloud 系列之 Config 配置中心(一) Spring Cloud 系列之 Config 配置中心(二) Spr ...

  9. Spring Cloud 系列之 Apollo 配置中心(三)

    本篇文章为系列文章,未读前几集的同学请猛戳这里: Spring Cloud 系列之 Apollo 配置中心(一) Spring Cloud 系列之 Apollo 配置中心(二) 本篇文章讲解 Apol ...

随机推荐

  1. spring boot2集成ES详解

    一:运行环境 JDK:1.8 ES:5.6.4 二:学习内容 如何构建spring-data-elasticsearch环境? 如何实现常用的增删改查? 如何实现对象嵌套也就是1对多这种关系? 三:J ...

  2. Codeforces Round #294 (Div. 2)C - A and B and Team Training 水题

    C. A and B and Team Training time limit per test 1 second memory limit per test 256 megabytes input ...

  3. jQuery和$、jQuery(function(){})和(function(){})(jQuery)

    1.$是JQuery的别名 ,在使用上是一样的,两者可以互换位置. $==jQuery; //true $===jQuery; //true 2.jQuery(function(){ ....... ...

  4. oracle监听理解 命名理解

    一.监听器是oracle基于服务器端的一种网络服务,主要作用是监听客户端的连接请求,并将请求转发给服务器. 监听器基于端口的,每个监听器会占用一个端口.默认监听端口1521. oracle家目录下的n ...

  5. kNN(K-Nearest Neighbor)最邻近规则分类

    KNN最邻近规则,主要应用领域是对未知事物的识别,即推断未知事物属于哪一类,推断思想是,基于欧几里得定理,推断未知事物的特征和哪一类已知事物的的特征最接近: K近期邻(k-Nearest Neighb ...

  6. [asp.net web api] HttpStatusCode的使用

    摘要 在开放api的时,我们需要返回不同的状态给调用方,以告诉它们当前请求的结果,是成功了还是失败了.当然这种给调用方的反馈有很多种做法,这里就说是web api内置的对Http状态码.http状态码 ...

  7. Monotouch/WCF: How to consume the wcf service without svcutil

    Becuase monotouch compile to native code, so it has some limitation such as dynamic invoke is not al ...

  8. BTA 常问的 Java基础40道常见面试题及详细答案

    原文:http://www.ymq.io/2018/03/10/java/ 八种基本数据类型的大小,以及他们的封装类 引用数据类型 Switch能否用string做参数 equals与==的区别 自动 ...

  9. ios 中是否每一个对象(尤其是在使用多线程时),都要判断一下对象是否为nil,以防止程序闪退?

    如下所示: Class messageClass = (NSClassFromString(@"MFMessageComposeViewController")); if (mes ...

  10. openshift 添加cron定时任务

    一般linux添加cron任务是在/etc/crontab,但是由于openshift的权限木有这么开放,所以如果需要设置定时任务的话,需要在如下的文件夹下添加你的sh文件,因为我需要的是每天运行一次 ...