使用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/
使用eclipse导入spring-framework-5.0.x源码_第1张图片
截止到目前,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,若如下图正确输出版本信息即可
使用eclipse导入spring-framework-5.0.x源码_第2张图片
这个查看版本的命令是不是跟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,第一个就是我们需要的。
使用eclipse导入spring-framework-5.0.x源码_第3张图片
进去项目里面,选择我们需要的版本,我这里下载的是5.0.x,这里我直接下载的源码的压缩包。
使用eclipse导入spring-framework-5.0.x源码_第4张图片
然后解压到E:\Spring-Resource\spring-framework-5.0.x
使用eclipse导入spring-framework-5.0.x源码_第5张图片
由于我这里已经编译过了,所以根目录下会有.setting文件夹。

2. 开始编译

2.1 运行import-into-eclipse.bat

在尝试多次编译失败之后,偶然在百度上看到,说直接双击运行spring-framework-5.0.x文件夹里面的import-into-eclipse.bat,我也只能死马当成活马医了,试一下吧,然后意外的是,没有报错!!!!!

弹出如下窗口,开始下载依赖包了,第一次运行了十几秒之后提示fail并且自动退出了,我又运行一次,就正常了。
使用eclipse导入spring-framework-5.0.x源码_第6张图片
使用eclipse导入spring-framework-5.0.x源码_第7张图片

使用eclipse导入spring-framework-5.0.x源码_第8张图片
过程是漫长的,耐心等待即可。 出现编译成功的绿条之后,不要着急按任意键!

编译结束之后 我看了一下gradle的本地仓库文件夹里面,多了将近一个G的新文件,也就是说spring编译的过程,也就是拼电脑配置和网速的时候了。编译的时间长短,取决于你的电脑的配置和网速。还有一点就是需要检查你的gradle的本地仓库的位置是不是自定义的,因为默认会在C盘比如我的是在C:\Users\linmengmeng\.gradle,到这里我才发现我之前没有配置本地仓库,写博客时就把本地仓库加在前面环境变量了。

可以看到cmd窗口里面提示到编译完成之后,下面开始第二步:

2.2 导入spring源码到eclipse或者STS

直接在eclipse的左侧项目空白处右键===>Import===>Existing Projects into Workspace,选择spring源码解压的根目录。
使用eclipse导入spring-framework-5.0.x源码_第9张图片
使用eclipse导入spring-framework-5.0.x源码_第10张图片
由于我当时没有安装groovy和ajnature,这里会有一个提醒安装的弹窗,这点还是很方便的。这里默认勾选了这两个插件,直接点Show Solutions。

使用eclipse导入spring-framework-5.0.x源码_第11张图片
eclipse卡了一下之后,弹出下面的弹窗,但是只有Groovy的Install按钮,那就点击Install安装就完事了。
使用eclipse导入spring-framework-5.0.x源码_第12张图片
使用eclipse导入spring-framework-5.0.x源码_第13张图片
使用eclipse导入spring-framework-5.0.x源码_第14张图片
然后提示是否重启eclipse,点击立即重启即可。重启之后就可以看到Project下出现了这么多新的项目
使用eclipse导入spring-framework-5.0.x源码_第15张图片
但是这个spring-beans上面有个叉,不用着急,让eclipse飞一会就好了,等右下角的progress绿条反应完就好了。

如果还有问题,可以 看一下Problem里面的具体信息,我这里是提示groovy的编译版本跟工作空间的不一致,这个错误忘了截图了,记得就是提示一个是2.4,另一个是2.5,直接右键项目名,然后选择Properties,然后将groovy的编译的版本改成后面的那个就好了,根据实际情况,你的不一定也是2.5,我晚上回去在我自己电脑上编译的时候,这个报错信息就变成需要改为3.0了。
使用eclipse导入spring-framework-5.0.x源码_第16张图片

我在我自己电脑上导入项目之后,spring-jdbc项目上面有个感叹号,然后依赖spring-jdbc的别的模块也是提示依赖的模块spring-jdbc中有错误。记得Problem里面提示spring-jdbc项目缺少一个jar包,然后我在eclipse里面倒腾了半天,也没有将那个依赖弄好,最后没办法了,就自己手动下载,然后导入到项目里面。

我这里提示的是缺少derby-10.14.2.0.jar,所以我们直接在中央仓库里面搜这个依赖即可
使用eclipse导入spring-framework-5.0.x源码_第17张图片
使用eclipse导入spring-framework-5.0.x源码_第18张图片
下载到本地之后,我们需要将其放在gradle的本地仓库里面,我这里使用的路径是D:\gradle\local_repository,我们可以看一下gradle的jar包的目录
使用eclipse导入spring-framework-5.0.x源码_第19张图片
然后我们找到缺少的那个jar包的路径
使用eclipse导入spring-framework-5.0.x源码_第20张图片
这里面有俩,我看了一下里面的目录是有固定套路的,里面是版本号文件夹,版本号文件夹里面还有两个随机命名的文件夹,一个文件夹里面放了pom文件,另一个文件夹放了jar文件,我的derby-project文件夹下面只有一个pom文件所在的随机文件夹,于是我便自己新建了一个文件夹,然后把刚才下载的jar包扔里面
使用eclipse导入spring-framework-5.0.x源码_第21张图片
接着在Eclipse里面手动指定jar的位置。

右键spring-jdbc项目---Build Path-----Config Build Path 

使用eclipse导入spring-framework-5.0.x源码_第22张图片
可以看到这里这个jar包的位置就是刚才手动创建的。这是修改之后的,修改之前这个异常的jar信息应该是在jar包列表的最后一行,选中异常的jar,点击右侧的Edit即可手动指定其位置。

然后点击Apply and Close 给Eclipse一点反应的时间,直到所有的子项目都没有错误信息,就可以开始下一步了。

然后回到cmd窗口,按任意键,提示进入第三步
使用eclipse导入spring-framework-5.0.x源码_第23张图片

3. 生成根目录

cmd窗口中提示,第三步,提示的大致意思:

不幸的是,eclipse不允许导入项目层次结构,因此我们不得不在过程中跳过根项目元数据的生成

貌似是提示我们:刚才我们导入的项目,只是一些分离的子项目,我们需要一个父项目。那就按任意键,接着往下走,接着编译
使用eclipse导入spring-framework-5.0.x源码_第24张图片
不出意外的话,会顺利出现绿条,然后接着第四步。

4. 导入根项目到eclipse中

使用eclipse导入spring-framework-5.0.x源码_第25张图片

重复第二步,导入根项目,然后可以看到Eclipse里面新导入一个名为spring的项目,包含了所有第二步导入的子项目,这样我们就可以在代码中在多个模块之间来回切换了。
使用eclipse导入spring-framework-5.0.x源码_第26张图片
使用eclipse导入spring-framework-5.0.x源码_第27张图片
从第四步的提示中,看到还要最后一步呢,但是当我完成第四步之后回到cmd窗口,敲了回车之后,没反应,连敲了两次回车之后,cmd窗口一闪就消失了。。。。。。。

不知道最后一步是什么操作,但是又没有影响我后面的操作。

但是到目前为止,我们已经顺利把源码导入到eclipse里面了。

这里创建一个简单的测试,开始我们的第一个demo之旅吧。

使用eclipse导入spring-framework-5.0.x源码_第28张图片
其中红框选中的就是我们自己写的测试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文件的内容,很简单,就是使用标签,来告诉Spring需要将这个类装载到容器里面。
beanFactoryTest.xml内容:


<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 {

	@Test
	public 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 可以看到左侧的小绿条,证明我们这个测试通过了。
使用eclipse导入spring-framework-5.0.x源码_第29张图片
看到绿条出现的那一刻,真的是舒服,折腾了半天终于弄好了,哈哈。

看似简单的几行代码,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导入spring-framework-5.0.x源码_第30张图片
目前最新的版本是适用于Eclipse 4.10的,我使用的是4.11,但是我还是装了这个。

你可能感兴趣的:(【Spring】,【总结】)