前言:
一直想找开源框架的源码看一下,学习一下优秀源码,考虑到mybatis3相对来说源码规模比较小,比较容易掌握,也更适合我以后的发展,所以选择了它。
mybatis是由maven管理的java项目,所以在编译源码之前我们的开发环境需要以下元素:
- JDK 1.6以上
- IDEA 运行java的IDE(集成开发环境),方便打开工程,IDEA有社区版和最终版两种版本,推荐最终版,功能比较健全。社区版是阉割版,用起来比较费劲,而且不支持Java EE。
- maven, 因为mybatis是由maven来管理包依赖的,所以本地必须安装maven,安装过程过程比较简单:maven下载地址,解压后就可以直接用了,这里要注意,我们需要设置环境变量,win7下设置环境变量的步骤我们这里不再赘述。另外我们maven本地仓库地址采用了maven的默认配置,win8下maven默认本地仓库地址为:C:\Users\1.m2\repository 。
下载源码:
开发环境保证符合条件以后,我们使用git克隆mybatis的工程源码到本地目录中(这里我找了一个带有中文注释版本的源码):
当然这里你也可以不使用git,直接下载源码包解压。
进行初步编译尝试
接下来,我们进入到mybatis工程目录下,尝试执行如下命令进行编译构建:mvn clean install
。这一步其实是下载源码工程依赖、并进行编译的过程,只是借助了maven。然后我们会发现报错了:
这个错误是因为mybatis依赖了一个parent工程(https://github.com/mybatis/parent),mybatis项目工程的pom.xml文件中对parent工程的引用不对。
解决parent依赖问题
所以我们需要将paren工程克隆到本地目录中:git clone https://github.com/mybatis/parent.git
,然后先进入parent工程下进行mvn clean install
将parent工程依赖的包下载下来、并保证parent工程编译通过,这步不会出现问题,在编译的输出信息中我们会看到parent工程的版本号,如图所示:
这个版本号我们需要填写到mybatis工程pom.xml文件parent依赖的version标签处,如下文。
接下来修改mybatis工程的pom.xml文件中标识parent依赖的地方:
<parent>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-parent</artifactId>
<version>28-SNAPSHOT</version>
<relativePath>../parent/pom.xml</relativePath>
</parent>
这里需要注意一点:我们引入的paren的<version>28-SNAPSHOT</version>
版本号需要与我们下载的parent工程版本号一致,也就是我们上面图片上找到的版本号。另外我们要注意:<relativePath>../parent/pom.xml</relativePath>
这里的路径要换成自己存储parent工程的相对路径。
解决部分插件版本问题:
进行完上文的修改后,按道理来讲mybatis工程是可以mvn clean install
成功的,但是我们执行命令后却报错:
告诉我们部分插件没有指定的相应的版本号,出于工程的稳定性考虑需要对使用的插件指定其版本号,并给出了合适的版本号,如图红色方框中的文字。我们只要在mybatisg工程的pom.xml文件中找到相对应的插件处添加<version>$NUM</version>
标签即可, $NUM代表具体的版本号。到这我们再执行mvn clean install
指令就可以将mybatis工程构建成功了。
在IDEA中打开工程
这时我们只需要使用IDEA import project 打开mybatis工程,然后在IDEA里面进行编译、甚至运行main函数的操作了。