我们读源码的过程中,为了证实一些猜想可能要修改某段代码,而且重构代码是提高代码能力的非常有效的手段。本篇文章来说一下如何搭建Mybatis源码环境。
一、下载源码并复制到本地项目
可以从官网去下载,如果是用idea可以打开任意一个Mybatis的.class,比如点击Resources.getResourceAsStream方法,右上角会有提示,点击download sources下载后,找到maven仓库的jar包目录,此时会多出一个源码的jar包,如下图所示:
解压后复制到项目的java目录下,如下图所示:
其中的last.soul目录是我自定义写的代码,可以忽略。
二、将需要下载的jar包添加到pom文件
打开Mybatis的class文件中的pom文件,将其中所有的dependency(可以不复制scope为test的dependency)复制到本地项目中的pom,最后在 去掉mybatis的dependency ,因为源码环境已经搭建完毕,不必再使用mybatis的jar包。
三、运行上篇文章中的测试用例正确无误
在第二步中有一个知识点,dependency下有一个optional属性。这个属性为false表示强依赖,即如果A项目依赖x的jar包optional属性为false,B项目依赖了A项目,那么B项目会自动下载x.jar,optional属性默认值即为false。反之如果为true,B项目不会自动下载x.jar,编译也不报错,但是如果调用了x.jar中的方法就会报类找不到的异常。也就是说不调用x.jar方法可以正常使用,否则就会报错,要手动在B项目中引入x.jar的dependency。
在mybatis的源码的pom文件中有很多optional为true的jar包,比如ognl,cglib等。所以这步中即使不去掉mybaits的dependency,也要把ognl,cglib等的dependency手动引入到项目中。