Spring 3.2.x源码编译

Spring 3.2.x源码编译

  • 前言
  • 环境
  • 开始编译
  • 导入eclipse
  • eclipse groovy插件
  • 总结

前言

因电脑重装,所有原先编译的Srping 3.2.x 的源码全部不见了。所以就重新编译了。但是在编译的过程遇到了很多的问题,本以为可以查看网上的一些博客可以轻松应对,但没想到大部份的博客都是停在以前编译的时候写,也许那个maven 库的地址确实可以引用,但是现在已经不能用了。所以只能自己找了,在编译的过程中还有遇到了网络的问题,导致jar下载不下来,不停重复的编译命令还是没用。网上找了很久也没有找到什么解决方案,只能自己研究了。仅以此笔记来保存下编译的过程,方便以后查看。

环境

jdk=1.7(https://www.oracle.com/technetwork/java/javase/archive-139210.html)
gradle=2.5(https://gradle.org/releases/)
在编译之前就有百度过一些文章,说编译spring 3.2 源码一定要使用gradle 2.5 版本。我也不知道为什么,但是为了不出错就直接使用了。
eclipse = 4.5.2(mars) (jdk和这个版本的eclipse对应。https://www.eclipse.org/downloads/packages/release)
spring 3.2.x 源码下载(https://github.com/spring-projects/spring-framework/archive/3.2.x.zip)

开始编译

使用CMD 命令到解压出来的spring-framework-3.2.x的目录下执行 gradle cleanIdea eclipse , 但是不久就会出现如下错误:
Spring 3.2.x源码编译_第1张图片
报错? 在百度了无数篇博客之后,都会告知需要替换下maven的引用仓库,然后提供一个了
repositories { maven { url “http://repo.springsource.org/plugins-release” } }
这个修改maven仓库地址是在 spring源码目录下面有一个 build.gradle 文件,在文件的首行有对maven仓库地址的依赖
Spring 3.2.x源码编译_第2张图片
只需要将 http://repo.springsource.org/plugins-release 这个仓库地址替换 文件中原有的 https://repo.spring.io/plugins-release
的地址即可。
但是,经过我无数的修改,结果还一样报错。 也许这个仓库曾经真的有用,但是现在貌似无效了。所以我只能去寻找别的仓库了,在百度了之后终于找到了一个国内的阿里云镜像仓库,进行了替换,结果就行了。
地址如下:
https://maven.aliyun.com/repository/spring-plugin
替换之后的文件:
Spring 3.2.x源码编译_第3张图片
Spring 3.2.x源码编译_第4张图片
在build.gradle文件 中有两处对maven的仓库应用,都需要替换成阿里云的镜像仓库。

在目录下面执行 gradle cleanIdea eclipse 编译命令,终于开始下载起jar了。如图:
Spring 3.2.x源码编译_第5张图片

当然,在编译过程可能会出现某个jar下载不了(可能是网络原因),只需重复的执行 gradle cleanIdea eclipse 编译命令即可。当然这是对运气好的人来的来说。
如果碰到了即便重复执行 gradle cleanIdea eclipse 编译命令 还是会出现同一个jar 下载不了的问题,那么就需要采取一些特殊手段了。

手段如下:
找到 gradle 下载 jar 缓存的地方 C:\Users\xxx\.gradle\caches 将文件夹里面的东西全部删除。然后在重新执行gradle cleanIdea eclipse 编译命令 直至编译成功为止。
C:\Users\xxx\.gradle\caches 这个目录地址是 gradle 存放下载jar的地方,如果出现了同一个jar一直下载不下来,直接将所有缓存删除,重新下载。

Spring 3.2.x源码编译_第6张图片
编译完成

导入eclipse

但是当导入eclipse之后就会发现,会有缺少spring-asm-repack 和spring-cglib-repack 的jar 错误。如图:
Spring 3.2.x源码编译_第7张图片这个问题的解决在 build.gradle 文件里面有两个编译命令:
Spring 3.2.x源码编译_第8张图片
分别在 spring 源码目录下面执行 gradle asmRepackJargradle cglibRepackJar 命令即可得到jar。如图:
Spring 3.2.x源码编译_第9张图片
但是很快,又会发现在 spring-oxm项目里面又缺少了 castor ,jaxb 和 xmlbeans这些jar。还是在builde.gradle里面有相关获取jar 的编译命令:
Spring 3.2.x源码编译_第10张图片
继续在spring 源码目录下面分别执行: gradle genCastor , gradle genJaxb , gradle genXmlbeans 三个命令,就可以获取的相应的jar.如图:
Spring 3.2.x源码编译_第11张图片
Spring 3.2.x源码编译_第12张图片
Spring 3.2.x源码编译_第13张图片
至此,spring相关的jar已经全部搞定。
Spring 3.2.x源码编译_第14张图片

eclipse groovy插件

因为我的eclipse是提前安装了groovy插件,所有spring 源码项目就没有报错。如果没有安装groovy插件则需要安装插件,安装插件可以百度。(每个eclipse版本的groovy插件版本都不一样,不要安装错了。)
安装完毕了之后,选择groovy插件版本 2.3.即可!(因为这个spring 3.2 源码是基于2.3版本的,报错信息里面也提示需要选择2.3版本
Spring 3.2.x源码编译_第15张图片

总结

我套他猴子的,步骤复杂,如果不了解 gradle 构建工具,又没有好的参考博文,将是一件极其恐怖的事情!

你可能感兴趣的:(Spring,3.x,源码分析笔记)