想对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. hdu 1514 记忆化搜索

    题意是给4堆(堆的高度小于等于40)有颜色(颜色的种类小于等于20)的物品,你有一个篮子最多能装5件物品,每次从这4堆物品里面任取一件物品放进篮子里,但是取每堆物品时,必须先取上面的物品,才能取下面的 ...

  2. 【JavaScript代码实现二】通用的事件侦听器函数

    // event(事件)工具集,来源:github.com/markyun markyun.Event = { // 页面加载完成后 readyEvent : function(fn) { if (f ...

  3. python实现并查集

    并查集是这样的数据结构:有一大堆的数据,把一些元素放在一个集合当中,另外一些元素放在另一个一个集合当中. 对于它的操作有:查看两个元素是否在一个集合当中.合并两个元素. 合并的时候采取的策略是这样的: ...

  4. PAT甲级1114. Family Property

    PAT甲级1114. Family Property 题意: 这一次,你应该帮我们收集家族财产的数据.鉴于每个人的家庭成员和他/她自己的名字的房地产(房产)信息,我们需要知道每个家庭的规模,以及他们的 ...

  5. 读书笔记_Effective_C++_条款三十四:区分接口继承和实现继承

    这个条款书上内容说的篇幅比较多,但其实思想并不复杂.只要能理解三句话即可,第一句话是:纯虚函数只继承接口:第二句话是:虚函数既继承接口,也提供了一份默认实现:第三句话是:普通函数既继承接口,也强制继承 ...

  6. 使用yum高速部署Oracle安装环境(11g)

    基于Linux安装过Oracle的童鞋们都应该清楚,安装Oracle的确是一件比較费时费力的差事,由于不过前期的rpm包,内核參数,创建用户等等这些个步骤都让那些新手不免眼花缭乱,一不留神.就导致终于 ...

  7. Linux下open与fopen的区别

    int open(const char *path, int access,int mode)    path 要打开的文件路径和名称   access 访问模式,宏定义和含义如下:          ...

  8. NHibernate的调试技巧和Log4Net配置

    1.查看nhibernate写在控制台里的sql语句 在配置文件中有这么个选项,假如把它设置为true,nhibernate会把执行的sql显示在控制台上. <property name=&qu ...

  9. Python之“可变”的tuple

    前面我们看到了tuple一旦创建就不能修改.现在,我们来看一个"可变"的tuple: >>> t = ('a', 'b', ['A', 'B']) 注意到 t 有 ...

  10. 深度学习研究组Deep Learning Research Groups

    Deep Learning Research Groups Some labs and research groups that are actively working on deep learni ...