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

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

前言

Spring源码学习,需要搭建一个Spring源码的运行环境,需要做以下几件事:    1,安装JDK(略)    2,从GitHub获取Spring源码    3,安装Gradle(略)    4,安装IDE-eclipse,并导入源码(安装Gradle插件)由于我们打算使用spring3.2.x源码进行环境搭建,而目前这一版本的搭建过程有很多坑在网上也搜罗了一些博文,几乎都不能实现,所以这里把我的搭建过程记录下来,和大家分享

获取Spring源码

通过GitHub获取Spring源码,我们使用Spring 3.2.x为例:    https://github.com/spring-projects/spring-framework/tree/3.2.x

下载Spring各模块依赖的jar包

本来想将源码导入到IDEA,查看了源码目录下的import-into-idea.md,介绍如何将源码导入idea

这里写图片描述

按照说明,执行了第一步发现并没有成功,所以直接执行 gradlew命令

这里写图片描述

导入Idea->选择gradle,等待下载文件,这种方式需要解决很多代码错误,我们先TODO,暂时选用eclipse

Spring源码目录结构如下:

Spring源码目录

由于GitHub上的Spring源码由Gradle构建,需下载Spring各模块依赖的jar包所以不能立即导入IDE,并且需要gradle命令生成对应的IDE文件// TODO 需要一篇 gradle生成eclipse和idea项目的博文以eclipse为例,导入eclipse的项目需要.project和.classpath文件,需要执行gradle命令:    gradle cleanidea eclipse    或    gradle eclipse -x :eclipse打开命令窗口,将当前目录切换至Spring源码所在目录,并执行gradle cleanidea eclipse这里需要注意:    执行gradle cleanidea eclipse后生成的代码的jar依赖关系路径为当前源码所在目录    这将影响我们后面导入包的依赖路径

转换eclipse

转换成功

等待项目转换完成后导入IDE注意:Spring源码根路径下的build.gradle文件中有类似这样一句:compileJava {sourceCompatibility = 1.6targetCompatibility = 1.6}compileTestJava {sourceCompatibility = 1.8targetCompatibility = 1.8options.compilerArgs += "-parameters"}是指定源码编译使用jdk1.6,测试代码编译使用jdk1.8,也就是说当前编译我们需要安装jdk1.8

将Spring源码导入IDE

通过eclipse->import导入Spring-framework源码目录

源码导入eclipse

导入完成目录,会有很多报错:

导入完成目录

项目右键BulidPath:

右键BulidPath

发现缺少两个jar包:

spring-cglib-repack-3.1.0.jar和spring-asm-repack-5.0.4.jar

缺少jar


解决Spring源码jar包缺失问题

这里我们要问了:这么多jar包都不缺,为什么缺这俩,而且细看发现很多模块都缺这俩我们对项目做了一个搜索(当然这里是已经知道原因了,只是把说明抓出来给大家看看)

缺少jar的原因

打开gclib的jar缺失文件

原因gclib

所以,我们知道:    Spring为了避免第三方class的冲突,repack掉了cglib和asm的jar问题清晰了,我们就来解决问题:    正常来讲,需要下载高版本Spring源码,找到这两部分的代码自己打JAR包这里我们直接给出jar:

下载缺失jar

将Jar导入工程,放在spring-core工程的build/lib目录下面,并clean工程重新Build

eclipse-Tomcat配置问题

解决了以上问题Build项目依然会报错

tomcat配置报错

这是因为eclipse没有配置tomcat,导致web工程报错

eclipse-tomcat配置


spring-oxm模块jar缺失问题

clean并重新Build后发现还有少jar的情况:

oxm缺失jar

显示在spring-oxm模块仍缺失3个jar包,在spring-oxm我们发现了oxm.gradle文件

oxm.gradle文件

oxm.gradle类似Maven的pom文件,其中记录了项目依赖的jar信息

gradleTask

我们可以看到包名,并通过命令行执行gradle命令下载jar进入spring-oms目录,执行 gradle+空格+task名下载完成后,进入gradle仓库找到jar,并导入工程gradle下载jar的默认路径:    Mac系统默认下载到:/Users/(用户名)/.gradle/caches/modules-2/files-2.1    Windows系统默认下载到:C:\Users\(用户名)\.gradle\caches\modules-2\files-2.1

查找jar

更简单的方法是,安装eclipse-gradle插件:

利用 Install new softwate -> Install,输入插件网址 http://dist.springsource.com/release/TOOLS/gradle,安装完需要重启 Eclipse

Gradle插件

插件生效后使用插件将项目转换为gradle项目:

导入gradle

转换完成后,使用插件下载jar

下载全部jar文件

这里可能会报一个错误:

error in opening zip file

Could not install Gradle distribution from ‘‘.

选择需要的版本下载这个文件,并放入Gradle文件:

https://services.gradle.org/distributions/

导入路径:

导入zip文件

重新Build工程,不在报错:

重新Build工程

[sts] -----------------------------------------------------[sts] Starting Gradle build for the following tasks: [sts]      :spring-oxm:cleanEclipse[sts]      :spring-oxm:eclipse[sts] -----------------------------------------------------:buildSrc:compileJava UP-TO-DATE:buildSrc:compileGroovy UP-TO-DATE:buildSrc:processResources UP-TO-DATE:buildSrc:classes UP-TO-DATE:buildSrc:jar UP-TO-DATE:buildSrc:assemble UP-TO-DATE:buildSrc:compileTestJava UP-TO-DATE:buildSrc:compileTestGroovy UP-TO-DATE:buildSrc:processTestResources UP-TO-DATE:buildSrc:testClasses UP-TO-DATE:buildSrc:test UP-TO-DATE:buildSrc:check UP-TO-DATE:buildSrc:build UP-TO-DATE:spring-oxm:cleanEclipseClasspath:spring-oxm:cleanEclipseJdt:spring-oxm:cleanEclipseJdtUi:spring-oxm:cleanEclipseProject:spring-oxm:cleanEclipse:spring-oxm:eclipseClasspath:spring-oxm:eclipseJdtPrepare:spring-oxm:eclipseJdt:spring-oxm:eclipseProject:spring-oxm:eclipseSettings:spring-oxm:eclipseWstComponent:spring-oxm:eclipseBUILD SUCCESSFULTotal time: 3.411 secs[sts] -----------------------------------------------------[sts] Build finished succesfully![sts] Time taken: 0 min, 3 sec[sts] -----------------------------------------------------之后spring-oxm继续报错:

oxm报错

需要spring-oxm项目右键->Gradle(STS)->Enable Dependency Managemrnt

使能管理

之后可能继续出现:Flight cannot be resolved to a type错误

jre版本问题

导入了上边缺失的jar后,重新Build还会报错误:

JRE版本问题

这是jre的问题,我们重新设置一下就好

removejre

点击 Add Librart,选择JRE System Library重新添加jre:

重新添加jre


spring-test-mvc项目依赖问题

spring-test-mvc项目缺一个依赖:spring-webmvc-tiles3,添加依赖即可修复

spring-oxm模块test报错

spring-oxm-test-error

oxm报错

这里的test报错其实是spring源码中的一个错误,需要我们手动修改一下:这里也是本次源码导入最耗时的一个步骤了,看了报错的类,觉得可能是代码有问题于是一步一步尝试修改了好久,最后,无意间找到了这个,对照修复即可:    http://code.taobao.org/p/cnspring/diff/2/trunk/spring-oxm/src/test/java/org/springframework/oxm这里我们也可以直接注释掉报错的test代码

Could not find com.itextpdf:itextpdf:4.2.2

有可能会报出这个错误:

itextpdf-itextpdf

错误原因: 因为3.2的版本比较久远,很多类库已经更新变化了修改方法 :     1)gradle 仓库下找到ivy.xml    C:\Users\Brave\.gradle\caches\artifacts-24    \f103b4baf7311290346105b788d3b582 找到ivy.xml    2)将dependency org="com.itextpdf" name="itextpdf" rev="4.2.2"     修改为dependency dependency org="com.itextpdf" name="itextpdf" rev="5.2.0",
修改为:

项目导入完成

到这里,我们解决了导入过程的所有问题,Spring源码Build成功

最后我们回顾一下全部流程

1,下载源码并解压
2,将源码放到合适的路径,执行命令gradle cleanidea eclipse
3,下载依赖完成后,导入IDE
4,解决spring-core模块的jar缺失问题(添加到spring-core/build/libs)
5,使用gradle插件将spring-oxm转换成为gradle项目,并下载jar文件
6,spring-oxm项目右键->Gradle(STS)->Enable Dependency Managemrnt
7,处理依赖模块jre报错问题
8,解决spring-oxm模块test报错

你可能感兴趣的文章
HTTP高并发测试
查看>>
数据重生:让神经机器翻译中的不活跃样本“复活”
查看>>
【Java】【28】提高List的removeAll方法的效率
查看>>
【JS】【31】读取json文件
查看>>
OpenSSL源代码学习[转]
查看>>
Spring下载地址
查看>>
google app api相关(商用)
查看>>
linux放音乐cd
查看>>
GridView+存储过程实现'真分页'
查看>>
flask_migrate
查看>>
解决activemq多消费者并发处理
查看>>
UDP连接和TCP连接的异同
查看>>
hibernate 时间段查询
查看>>
java操作cookie 实现两周内自动登录
查看>>
Tomcat 7优化前及优化后的性能对比
查看>>
Java Guava中的函数式编程讲解
查看>>
Eclipse Memory Analyzer 使用技巧
查看>>
tomcat连接超时
查看>>
谈谈编程思想
查看>>
iOS MapKit导航及地理转码辅助类
查看>>