spring源码学习(一):eclipse导入spring源码
前言
对于一门技术,我们最先是了解它(what),然后再熟练的使用它(how)以及何时用它(when),最后肯定要看透它(why)。spring作为Java开发人员可以说是最熟悉不过的了,基本每个Java的项目都会用到spring,阅读spring的源码对于一个有理想的程序员来说也是一件必干不可的事,阅读源码我们才能更好的使用它、理解它,在遇到问题的时候我们才能更好的找到问题的原因并高效的解决。
阅读源码的最好方式就是下载下来然后导入到IDE,通过编写Test代码来Debug跟踪。spring源码导入到eclipse确实要花费一点功夫,容易出错。在这里记录一下。
环境准备
1.下载spring源码
如果不知道spring在Github上的地址,我们可以借助搜索引擎,输入 "spring github"关键字,一般第一个搜索结果就是。
点进去就跳转到Github上的spring源码了,可以点击绿色的按钮【Clone or download】下载到本地
spring的Github地址:https://github.com/spring-projects/spring-framework
2.安装gradle
spring源码是通过gradle构建的,所以我们需要安装gradle,gradle下载: http://www.gradle.org/downloads ,下载后设置环境变量: GRADLE_HOME = gradle主目录 (D:\mysoft\gradle\gradle-3.5), 并在path中加入;%GRADLE_HOME%\bin;
配置完成之后,在命令行窗口输入 gradle -v,验证是否安装成功。
3.编译
① 构建spring源码
在spring源码的目录中有 import-into-eclipse.bat文件(Windows环境),我们可以直接点击,也可以进入该目录,通过命令行窗口来执行。
连续两次回车,就可以开始自动构建;
这种方式一般容易失败。我们通过另外一种方式:进入spring源码目录执行:gradle eclipse -x :eclipse,执行之后就是一大串的Download,构建时间根据网速来定,我们只需等待。
下载完后我们可以看到每个模块下多了两个文件:.classpath和.project。
② 通过eclipse的import导入Spring-framework源码目录
在Eclipse菜单File->import选择General下面的Exsiting projects into workspace,这样就导入完成了。导入源码以后,项目会出现报错的情况,缺少两个jar包。
我们去网上找下这两个jar包,根据提示我们在模块下建立文件夹 build->libs,并将下载好的两个jar包放入到libs文件夹里面,重新Clean一下项目。
③ 安装eclipse的groovy插件
clean完之后发现项目还报错(关于groovy的,所以eclipse需要集成groovy插件),
解决:eclipse菜单栏:help -- Install new software:地址输入http://dist.springsource.org/snapshot/GRECLIPSE/e4.5/,下载完即可。
具体groovy版本和eclipse版本,参考:https://github.com/groovy/groovy-eclipse/wiki
④ 还有一个spring-oxm项目报错
需要在spring-oxm项目路径下输入命令:gradle cleanIdea :spring-oxm:compileTestJava(其实不用也行,只是测试代码报错,但是强迫症的我们不允许),下载完后,刷新该项目即可。
⑤ Groovy compiler 不匹配问题
这是groovy插件的版本不匹配,解决方法参考:Groovy compiler mismatch problem
⑥ 最后效果
4.版本说明
eclipse:eclipse 4.5 (Mars)
spring源码:
jdk:jdk 1.8
gradle:gradle 3.5
groovy eclipse plugin:e4.5
spring源码学习(一):eclipse导入spring源码的更多相关文章
- Eclipse导入Hadoop源码项目及编写Hadoop程序
一 Eclipse导入Hadoop源码项目 基本步骤: 1)在Eclipse新建一个java项目[hadoop-1.2.1] 2)将Hadoop压缩包解压目录src下的core,hdfs,mapred ...
- eclipse导入Java源码
eclipse导入Java源码 下载源码包(一般jdk都自带了, 我的没有) src.zip eclipse -> window -> preferences -> JAVA -&g ...
- Hadoop1.x目录结构及Eclipse导入Hadoop源码项目
这是解压hadoop后,hadoop-1.2.1目录 各目录结构及说明: Eclipse导入Hadoop源码项目: 注意:如果没有ant的包可以去网上下,不是hadoop里面的. 然后如果通过以上还报 ...
- eclipse导入tomcat源码
我的开发环境:windows7 64位 一.官网下载tomcat源码.在此奉上一站地址:http://archive.apache.org/dist/tomcat/: 二.编译源码生成.jar文件: ...
- Eclipse导入Elasticsearch源码
Eclipse导入Elasticsearch源码的步骤, 基于Elasticsearch 6.2.2的源码版本. 1.安装JDK1.9 Elasticsearch 6.2.2需要JDK1.9编译,否则 ...
- Eclipse导入Zookeeper源码Version2017.11.3
将Zookeeper源码导入Eclipse, Zookeeper源码需要使用ant构建后才能导入Eclipse, 和Solr的源码一样也是使用ant构建的, 大部分可以参考Eclipse导入Solr源 ...
- eclipse导入已有源码
http://blog.csdn.net/scruffybear/article/details/1917301 如有转载,请注明出处,并保持文章的完整性,谢谢! 最近工作之余在研究国外经典书籍< ...
- SpringBoot源码学习1——SpringBoot自动装配源码解析+Spring如何处理配置类的
系列文章目录和关于我 一丶什么是SpringBoot自动装配 SpringBoot通过SPI的机制,在我们程序员引入一些starter之后,扫描外部引用 jar 包中的META-INF/spring. ...
- eclipse导入Tomcat8源码
最近这段时间在学习how tomcat works这本书,需要结合书上的例子对照tomcat源码来看,需要导入tomcat的源码,所以在网上找了很多教程,结合自己遇到的问题,记录如下: 1.前期准备 ...
随机推荐
- [翻译] AFSoundManager
AFSoundManager iOS audio playing (both local and streaming) and recording made easy through a comple ...
- Redis学习---Redis操作之其他操作
全局有效的其他操作 save 强制将内存/缓存中的key刷到硬盘上 ------------------------------------------------------------------ ...
- Linux /dev/null详解
常用的命令展示 /dev/null 和 /dev/zero的区别 1./dev/null:表示 的是一个黑洞,通常用于丢弃不需要的数据输出, 或者用于输入流的空文件 ...
- java 和 javascript CryptoJS 进行HmacSHA1加密
import java.io.IOException; import java.io.UnsupportedEncodingException; import java.security.Invali ...
- AT89S52汇编实现l通过按键中断切换led灯的四种闪烁模式(单灯左移,单灯右移,双灯左移,双灯右移)
;通过P1口控制8路LED的四种闪烁模式,单独LED灯左移,单独LED灯右移,相邻两个灯左移,相邻两个灯右移;通过一个外部中断0来检测按键的跳变沿来切换闪烁模式,第一次按键按下弹起,灯的闪烁状态由单独 ...
- 手动安装gradle
在学习andorid studio时发现编译超级无比的慢,网上有文说是因为gradle的原因,使用离线gradle可以大幅提高编译速度,准备尝试下看看如何.由于gradle的资料都是英文,而我又是英文 ...
- uva 12508 - Triangles in the Grid(几何+计数)
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u011328934/article/details/35244875 题目链接:uva 12508 ...
- 简单的Windows 服务的安装和卸载
步骤: 1.运行--〉cmd:打开cmd命令框 2.在命令行里定位到InstallUtil.exe所在的位置 InstallUtil.exe 默认的安装位置是在C:/Windows/Microsoft ...
- 使用nginx替换Ingress
总感觉k8s Ingress 不可控, 所以使用nginx 替换Ingress,还是比较简单的. apiVersion: extensions/v1beta1 kind: DaemonSet meta ...
- vs未能正确加载XXX包,编译时停止工作问题
出现这个问题的原因可能是配置更改或安装了另一个扩展,幸好之前用的不多,重新进行用户配置代价也不高,打开Visual Studio Tools: 选择VS2013 开发人员命令提示: 输入deven ...