使用eclipse导入spring-framework-5.0.x源码
记录一下自己编译Spring-framework-5.0.x的过程
- 1. 准备阶段 (环境:jdk1.8+spring5+gradle4.9+eclipse4.11)
- 1.1 jdk1.8
- 1.2 Gradle安装与配置
- 1.3 AspectJ和Groovy安装与配置
- 1.4 spring-framework-5.0.x源码下载
- 2. 开始编译
- 2.1 运行import-into-eclipse.bat
- 2.2 导入spring源码到eclipse或者STS
- 3. 生成根目录
- 4. 导入根项目到eclipse中
- 补充:
- 1. AJDT插件的安装
说明一下我这里打算用eclipse查看源码,所以下面的编译操作后,只是为了往eclipse里面导入,没有尝试往idea里面导入。
1. 准备阶段 (环境:jdk1.8+spring5+gradle4.9+eclipse4.11)
1.1 jdk1.8
由于此次编译的是spring-framework-5.0.x,jdk版本最低需要1.8
1.2 Gradle安装与配置
1. gradle下载地址:https://services.gradle.org/distributions/
截止到目前,gradle最新版本为5.6.1了。gradle下载时候有三个包,gradle-src为gralde源码,gradle-bin为安装包,gradle-all为源码加安装包,我这里下载的是gradle-all
我刚开始直接下载的最新版本的,结果到后面编译的时候,报错了,提示有个什么东西1.8
,还是什么1.0.2.be
什么鬼的版本问题,然后我就换成4.10了,就没有报那个错误了。
gradle下载后不需要安装,解压在本地磁盘后配置环境变量即可。
2. 配置环境变量:
新建GRADLE_HOME
,path中增加%GRADLE_HOME%/bin;
即可。
配置完成以后win+r,输入cmd进入dos界面,键入命令gradle -v,若如下图正确输出版本信息即可
这个查看版本的命令是不是跟maven很像??这俩其实功能差不多。
然后配置gradle默认的本地仓库,可做如下配置,新增GRADLE_USER_HOME
,路径配置成需要的本地仓库路径即可,我这里配置为:E:\Gradle\LocalRepository
。
1.3 AspectJ和Groovy安装与配置
AspectJ的安装让我折腾了半天,由于我的eclipse是4.11版本的,https://www.eclipse.org/ajdt/downloads/
找了一下,最新的版本只有适合eclipse4.10版本的,上面提示说插件适合的版本需要和Eclipse的版本一致才可以生效,然后就试着装了一下,好像确实没有生效。当然如果没有安装的话,在最后导入项目的时候,会提示缺少这两个工具,直接在marketPlace里面可以看到Groovy,直接点Install
按钮即可,但是另外的AspectJ Development Tools
,这个玩意却没有Install
按钮可以点,只有一个learnMore
,在折腾半天之后,那我就点learnMore看看吧,进去里面之后竟然有个Install,点了之后貌似就正常安装了。
1.4 spring-framework-5.0.x源码下载
这里我们直接从全球最大的同性交友平台github上下载就可以了,进入github官网,直接搜索spring-projects/spring-framework
,第一个就是我们需要的。
进去项目里面,选择我们需要的版本,我这里下载的是5.0.x
,这里我直接下载的源码的压缩包。
然后解压到E:\Spring-Resource\spring-framework-5.0.x
由于我这里已经编译过了,所以根目录下会有.setting文件夹。
2. 开始编译
2.1 运行import-into-eclipse.bat
在尝试多次编译失败之后,偶然在百度上看到,说直接双击运行spring-framework-5.0.x
文件夹里面的import-into-eclipse.bat
,我也只能死马当成活马医了,试一下吧,然后意外的是,没有报错!!!!!
弹出如下窗口,开始下载依赖包了,第一次运行了十几秒之后提示fail并且自动退出了,我又运行一次,就正常了。
过程是漫长的,耐心等待即可。 出现编译成功的绿条之后,不要着急按任意键!
编译结束之后 我看了一下gradle的本地仓库文件夹里面,多了将近一个G的新文件,也就是说spring编译的过程,也就是拼电脑配置和网速的时候了。编译的时间长短,取决于你的电脑的配置和网速。还有一点就是需要检查你的gradle的本地仓库的位置是不是自定义的,因为默认会在C盘比如我的是在C:\Users\linmengmeng\.gradle
,到这里我才发现我之前没有配置本地仓库,写博客时就把本地仓库加在前面环境变量了。
可以看到cmd窗口里面提示到编译完成之后,下面开始第二步:
2.2 导入spring源码到eclipse或者STS
直接在eclipse的左侧项目空白处右键===>Import===>Existing Projects into Workspace,选择spring源码解压的根目录。
由于我当时没有安装groovy和ajnature,这里会有一个提醒安装的弹窗,这点还是很方便的。这里默认勾选了这两个插件,直接点Show Solutions。
eclipse卡了一下之后,弹出下面的弹窗,但是只有Groovy的Install按钮,那就点击Install安装就完事了。
然后提示是否重启eclipse,点击立即重启即可。重启之后就可以看到Project下出现了这么多新的项目
但是这个spring-beans上面有个叉,不用着急,让eclipse飞一会就好了,等右下角的progress绿条反应完就好了。
如果还有问题,可以 看一下Problem里面的具体信息,我这里是提示groovy的编译版本跟工作空间的不一致,这个错误忘了截图了,记得就是提示一个是2.4,另一个是2.5,直接右键项目名,然后选择Properties,然后将groovy的编译的版本改成后面的那个就好了,根据实际情况,你的不一定也是2.5,我晚上回去在我自己电脑上编译的时候,这个报错信息就变成需要改为3.0了。
我在我自己电脑上导入项目之后,spring-jdbc项目上面有个感叹号,然后依赖spring-jdbc的别的模块也是提示依赖的模块spring-jdbc中有错误。记得Problem里面提示spring-jdbc项目缺少一个jar包,然后我在eclipse里面倒腾了半天,也没有将那个依赖弄好,最后没办法了,就自己手动下载,然后导入到项目里面。
我这里提示的是缺少derby-10.14.2.0.jar
,所以我们直接在中央仓库里面搜这个依赖即可
下载到本地之后,我们需要将其放在gradle的本地仓库里面,我这里使用的路径是D:\gradle\local_repository
,我们可以看一下gradle的jar包的目录
然后我们找到缺少的那个jar包的路径
这里面有俩,我看了一下里面的目录是有固定套路的,里面是版本号文件夹,版本号文件夹里面还有两个随机命名的文件夹,一个文件夹里面放了pom文件,另一个文件夹放了jar文件,我的derby-project
文件夹下面只有一个pom文件所在的随机文件夹,于是我便自己新建了一个文件夹,然后把刚才下载的jar包扔里面
接着在Eclipse里面手动指定jar的位置。
右键spring-jdbc项目---Build Path-----Config Build Path
可以看到这里这个jar包的位置就是刚才手动创建的。这是修改之后的,修改之前这个异常的jar信息应该是在jar包列表的最后一行,选中异常的jar,点击右侧的Edit即可手动指定其位置。
然后点击Apply and Close 给Eclipse一点反应的时间,直到所有的子项目都没有错误信息,就可以开始下一步了。
然后回到cmd窗口,按任意键,提示进入第三步
3. 生成根目录
cmd窗口中提示,第三步,提示的大致意思:
不幸的是,eclipse不允许导入项目层次结构,因此我们不得不在过程中跳过根项目元数据的生成
貌似是提示我们:刚才我们导入的项目,只是一些分离的子项目,我们需要一个父项目。那就按任意键,接着往下走,接着编译
不出意外的话,会顺利出现绿条,然后接着第四步。
4. 导入根项目到eclipse中
重复第二步,导入根项目,然后可以看到Eclipse里面新导入一个名为spring
的项目,包含了所有第二步导入的子项目,这样我们就可以在代码中在多个模块之间来回切换了。
从第四步的提示中,看到还要最后一步呢,但是当我完成第四步之后回到cmd窗口,敲了回车之后,没反应,连敲了两次回车之后,cmd窗口一闪就消失了。。。。。。。
不知道最后一步是什么操作,但是又没有影响我后面的操作。
但是到目前为止,我们已经顺利把源码导入到eclipse里面了。
这里创建一个简单的测试,开始我们的第一个demo之旅吧。
其中红框选中的就是我们自己写的测试demo了。
首先是新建一个简单的实体类MyTestBean.java
,然后使用xml文件,让Spring将我们这个类添加到容器中。
package my.test.bean;/*** * @author linmengmeng* @since 5.0*/
public class MyTestBean {private String testStr = "testStr";/*** @return the testStr*/public String getTestStr() {return testStr;}/*** @param testStr the testStr to set*/public void setTestStr(String testStr) {this.testStr = testStr;}}
然后是xml文件的内容,很简单,就是使用<bean>
标签,来告诉Spring需要将这个类装载到容器里面。
beanFactoryTest.xml内容:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="myTestBean" class="my.test.bean.MyTestBean"></bean></beans>
最后是我们的测试文件:BeanFactoryTest.java
package my.test.bean;import org.junit.Test;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;import static org.junit.Assert.*;/*** * @author linmengmeng* @since 5.0*/
@SuppressWarnings("deprecation")
public class BeanFactoryTest {@Testpublic void testSimpleLoad() {BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("/my/test/bean/beanFactoryTest.xml"));MyTestBean testBean = (MyTestBean) beanFactory.getBean("myTestBean");assertEquals("testStr", testBean.getTestStr());}
}
右键testSimpleLoad
方法,Run as 可以看到左侧的小绿条,证明我们这个测试通过了。
看到绿条出现的那一刻,真的是舒服,折腾了半天终于弄好了,哈哈。
看似简单的几行代码,Spring究竟做了哪些工作呢?这个就是我们需要了解的了。源码之旅从今天就开始了,小伙伴们让我们一起学习吧,后续有机会我会接着分享自己的源码学习记录。
最后贴上一份知秋大佬翻译的Spring源码的中文文档,感觉是真的良心之作了,对于我这种英语渣渣来说,中英文对照看,是真的太棒了。
Spring Framework 5.0.0.M3中文文档
Spring Framework 5.0.0.M3英文文档 提取码: xvdy
备用地址: 提取码: t6mi
Spring Framework 各个版本源码文档(英文) 可以下载PDF文档,比如我需要下载5.0.0.M3
版本的文档,打开前面的链接之后,选择5.0.0.M3
,然后依次打开目录5.0.0.M3/spring-framework-reference/pdf/spring-framework-reference.pdf
,在预览界面上右键,然后另存为即可。
补充:
1. AJDT插件的安装
本来打算把自己写的测试用例同步到github上呢,结果把项目给弄崩了,然后试着这个博客再重新编译了一次,完美编译和上传到github上。不过这次搞好了那个AspectJ插件的安装,虽然版本和我用的Eclipse版本不一致,但还是装上了。
这里放上AJDT的页面链接:https://www.eclipse.org/ajdt/downloads/
目前最新的版本是适用于Eclipse 4.10的,我使用的是4.11,但是我还是装了这个。
使用eclipse导入spring-framework-5.0.x源码相关推荐
- Spring Framework 核心原理与源码解析-大纲
读Spring Framework的源码的目的是什么? Spring源码阅读的难度在于其呢内容庞大,并不是里面有很复杂的算法,需要高智商才能理解.所以你搞懂了Spring的源码并不能说明你有多聪明,但 ...
- eclipse导入spring源码二(丢失的spring-asm-repack和spring-cglib-repack)
在上一篇eclipse导入spring源码一 中已经完成一部分了,但是整个项目代码依然有报错: 很明显的错误,就是找不到jar(spring-asm-repack-5.0.1.jar和spring-c ...
- Jmeter-3.0的源码导入eclipse并执行
最近在研究jmeter二次开发,所以需要先jmeter导入Eclipse,后续还需要学习jmeter源码以及二次开发的相关知识,到时候也会分享出来,下面是jmeter导入Eclipse的过程 首先去官 ...
- 具有Java 8支持的Spring Framework 4.0.3和Spring Data Redis 1.2.1
Spring Framework 4.0.3 正如Spring社区宣布的那样,Spring Framework 4.0.3现在可用. 它是上周Java 8发布后框架的第一个版本,因此它是使用OpenJ ...
- 振作起来– Spring Framework 4.0即将来临!
几天前,SpringSource 宣布流行的Spring框架的4.0版本正在开发中. 下一个迭代将是Spring Framework 4.0! 如SpringSource所言,即将发布的版本的重点是& ...
- Spring学习总结(23)——Spring Framework 5.0 新特性
Spring Framework 5.0 是自 2013年12月版本 4 发布之后 Spring Framework 的第一个主发行版.Spring Framework 项目的领导人 Juergen ...
- Ubuntu16.04编译android6.0.1源码记录
目录 目录 一.安装环境 二.下载源码 1.下载repo 2.初始化repo 3.同步源代码 关于驱动 三.编译源码 四.导入源码到AS 五.刷入真机 六.修改源码 总结: 3.同步源代码 关于驱动 ...
- Spring3.0.5源码扩展支持AOP 获取HttpServletResponse
Spring3.0.5源码扩展支持AOP 获取HttpServletResponse.老项目直接升级Spring版本风险无法评估,所以直接扩展Spring包支持低版本没有的功能. 目录 Spring扩 ...
- Spring源码深度解析(郝佳)-Spring 常用注解使用及源码解析
我们在看Spring Boot源码时,经常会看到一些配置类中使用了注解,本身配置类的逻辑就比较复杂了,再加上一些注解在里面,让我们阅读源码更加难解释了,因此,这篇博客主要对配置类上的一些注解的使用 ...
- Ubuntu20.4 Android-9.0.0_r46源码下载编译
Ubuntu20.4 Android-9.0.0_r46源码下载编译调试 安装Ubuntu虚拟机 ubuntu镜像下载地址: https://ubuntu.com/download 官网下载地址较慢可 ...
最新文章
- 简述安装Tsurugi Linux发行版
- bzoj 1024 [ SCOI 2009 ] 生日快乐 —— 递归
- linux升级tls,为CentOS升级OpenSSL 让Nginx支持TLS 1.2
- 设计模式(一)预备知识
- jQuery 拖拽窗体
- 华为OJ平台——整形数组合并
- 建筑电气工程设计常用图形和文字符号_想要识图无忧?电气工程图图形符号全能图解,电工最爱识图助手...
- 马斯克公布柏林超级工厂航拍 白雪皑皑仍在施工
- 64位Win7下用VS2010编译OpenSSL
- 创建图片mat_OPENCV(二)——Mat类与几个函数的简介
- 我在试验Memcached,你的项目怎么处理缓存?
- java 算法基础之三合并排序法
- 整理了一些产品经理书籍,看看有没有适合你的
- 英文系统下手工安装五笔86版
- php fatal error: cannot redeclare,Fatal error: Cannot redeclare 常见问题_PHP教程
- Android Studio开启DDMS查看手机文件
- 醉林疯的OJ 1055: 兔子繁殖问题
- 【笔记】SQL查询语句的基本使用方法
- 菜鸟教程JVM优化,看一篇就够了!
- gitlab ip变更runner拉取代码失败、shell启动springboot项目启动起来。