博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring源码环境搭建-4.3.6
阅读量:2222 次
发布时间:2019-05-08

本文共 1681 字,大约阅读时间需要 5 分钟。

1,前言

之前写了一篇Spring 3.2.x源码环境的搭建的笔记发现3.2.x版本的Spring源码过于久远,导致在导入代码之后会有很多错误需要手工处理甚至连当时依赖的jar版本都需要重新修改才能build成功搭建源码环境的初衷是为了学习源码,Spring源码核心主要是AOP和IOC而这两部分在版本迭代中基本稳定,所以版本的升级对于我们学习框架本身并没有影响所以,这次我们选择用Spring 4.x版本的源码来搭建一个Spring环境

2,下载源码

这部分不在赘述了,到GitHub上直接下载对应版本的Spring源代码就可以了:https://github.com/spring-projects/spring-framework/releases

3,构建工程

1,下载源码后,查看根目录下README.md文件

README.md

2,执行 ./import-into-eclipse.sh (需要JDK8),

import-into-eclipse

这里面提到了STS-一个基于eclipse的Spring IDE工具:- Eclipse downloads: http://download.eclipse.org/eclipse/downloads- STS downloads: http://spring.io/tools/sts/all- STS nightly builds: http://dist.springsource.com/snapshot/STS/nightly-distributions.html

耐心等待一段时间,执行步骤1,约15分钟

step1

步骤1成功,继续步骤2:

step1-success

步骤2,3,4,5一样,直接下一步就好

step3

step4

执行./gradlew install(约13分钟)

gradlew install

执行./gradlew build(约10分钟)

gradlew build


四,下载并安装STS(spring-tool-suite)

Spring提供了一个基于eclipse的Spring IDE,简称STS这个工具在学习Spring的时候将带来很多便利下载并安装STS:    https://spring.io/tools/sts/all

STS下载

下载完成后安装并启动STS:

启动STS


五,导入工程

导入spring源码工程

导入spring源码工程

此时项目会有报错,因为Spring构建需要groovy

六,安装groovy

安装groovy:http://groovy-lang.org/download.htmlbrew安装:Brave:~ Brave$ brew install groovy查看版本号:Brave:~ Brave$ groovy -vGroovy Version: 2.4.12 JVM: 1.8.0_51 Vendor: Oracle Corporation OS: Mac OS X此时eclipse下的Spring项目依然报错,原因是eclipse需要安装对应版本的groovy插件注意:groovy插件要和eclipse版本匹配,否则无效

groovy报错


七,安装eclipse-groovy插件

安装插件:

eclipse的 Help -> Install New Software 中,下载groovy插件

STS版本3.9.2 基于eclipse4.7.2版本,需下载对应版本的groovy插件(4.7版本)

eclipse版本

- Spring Tool Suite:https://spring.io/tools/sts/all- Groovy/Grails Tool Suite:https://spring.io/tools/ggts/all

4.7版本Groovy插件地址:

一般来讲,安装groovy插件后重启eclipse->clean项目后问题解决

但有时候还会继续报错,这可能是由于groovy版本导致的编译问题


八,Groovy编译版本问题

Groovy的编译版本问题,会有下面的报错:

groovy编译问题

修改eclipse配置中groovy compiler版本:

修改Eclipse-groovy编译版本

转换后要求重启eclipse,重启后问题解决


九,Spring4.3.6 源码编译完成

编译完成截图如下:

Spring源码编译完成

你可能感兴趣的文章
【C++】面向对象的三大特性
查看>>
【C++】智能指针(后续)
查看>>
【C】堆区和栈区的区别
查看>>
【linux】send和recv函数解析
查看>>
【Linux】线程安全的单例模式以及计算密集型线程和IO密集型线程
查看>>
一次完整的HTTP请求是怎样的??
查看>>
【C++】常见的内存泄漏及解决方法
查看>>
【C++】const 指针与指向const的指针
查看>>
【Linux】多线程和多进程 及其应用场景
查看>>
【C++】构造函数中必须通过初始化列表来进行初始化情况
查看>>
【算法】对于大数的操作
查看>>
【操作系统】系统调用的概念
查看>>
【计算机网络】cookie和session的区别
查看>>
【C++】构造函数、析构函数抛出异常的问题
查看>>
【C++】关于vector<bool>
查看>>
【操作系统】内存碎片产生原因及终极解决办法
查看>>
幂等性验证思想
查看>>
DB理论--数据存储方式
查看>>
PB协议的说明与使用
查看>>
什么是TPS,什么是QPS,区别是什么?
查看>>