idea中clone Spring源码

前言

以前学习spring的时候都是maven添加spring的依赖.然后自己写几个junitTest.debug到源码里去看看..最近在刚好在看spring相关书籍.想去修改源码做做实验.所以就尝试了下把github上的spring源码导入到idea中.

不管是市面上的书籍还是很多博客.我觉得在这个方面写的都不太好..其实没那么复杂..这里简单介绍下我的操作方法.

clone

首先肯定是从github上去clone源码. https://github.com/spring-projects/spring-framework.

最好是用命令行或者是其他工具去做clone,而不是直接使用idea的cloneidea中clone Spring源码..因为直接使用idea的clone后面会需要多操作几步,略有麻烦..我这里是使用了idea的clone.

解决编译错误

打开项目以后肯定会遇到各种报错,编译问题..比如spring-core这个模块下面很多类都会要用到Objenesis和cglib相关的类.发现都没有.

这个时候不管是spring相关书籍,比如《spring源码深度解析》还是网上很多博客.都说你要去把这几个jar导入,然后修改gradle脚本之类的.让idea能找到这些类...其实这是不必要的.

直接去查看项目根目录下import-into-idea.md.

里面讲到clone项目以后首先要做的是

./gradlew cleanIdea :spring-oxm:compileTestJava

做完这不操作会自动运行gradle脚本..spring-core项目下的gradle的有2个task就是repack cglib和objenesis.

命令运行完以后你会发现spring-core下会多出几个jar

idea中clone Spring源码

这几个jar就是你编译缺少的那些class.

所以根本不用去网上找jar再导入.gradle脚本里都帮你写好了..

这个时候如果你的项目直接是命令行clone下来的这个时候导入idea就没问题了...

idea重新导入

如果之前不是命令行clone下来的.而是使用idea直接去clone的.那这个时候尽管已经有了这些jar.但是还是提示你找不到这些类.

这个时候只要重新导入一下项目就好了.(或者把那些jar添加到classpath里也可以.但是麻烦.不如重新导入项目简单)

idea中clone Spring源码

idea中clone Spring源码

先去在recent projects里把spring的项目删掉.再重新导入

idea中clone Spring源码

先gradle项目就OK了.这个时候就不会有编译错误了...

其他操作

最后就是按md里说的那样,把spring-aspect排除掉...

idea中clone Spring源码

如果还有编译错误的话可以在compiler里剔除那个模块

idea中clone Spring源码

然后就可以愉快的运行其他模块的unit tests了..

idea中clone Spring源码

相关推荐