Mybatis源码阅读环境搭建
前言
mybatis源码阅读环境搭建还是比较简单的,接下来我们讲解一下如何搭建该源码阅读环境。
提示:本篇文章属于原创,请勿抄袭。
一、下载mybatis的源码
mybatis源码下载地址:下载 mybatis 源码
下载完成后,将源码解压出来,然后查看对应的 pom.xml 文件,看看当前下载的 mybatis 所依赖的父工程的版本号,因为 mybatis 还依赖了 mybatis-parent 这个项目 ,所以我们还需要将 mybatis-parent 的源码也下载下来。
mybatis-parent 源码下载地址:下载 mybatis-parent 源码
其实,下载完这两个源码包就可以了,但是如果要阅读 mybatis 和 spring 整合的源码,那么我们还要将 mybatis-spring 的源码也下载下来,注意:由于 mybatis-spring 也依赖了 mybatis-parent ,所以我们在下载的时候要选择对应的版本号。
mybatis-spring 源码下载地址:下载 mybatis-spring 源码
这三个包都下载完了后,将他们解压,(注意:解压后将这三个项目放在同一个文件夹下) 然后导入 IDEA。如下图所示:
二、编译源码
导入 idea 后先不要着急编译,先修改几处地方:
准备工作做完了,接下来就是编译了,先编译 mybatis-parent 项目 ,然后是 mybatis 项目,最后是 mybatis-spring 项目,顺序不能乱了,因为它们之间有依赖关系。分别进入每个项目对应的目录一次执行:mvn clean install -Dmaven.test.skip。 -Dmaven.test.skip的作用是跳过测试用例,这样可以快一点。
等到三个项目都编译完成后,就可以来创建我们的测试项目了。
三、创建测试项目
在 IDEA 中新建一个 module ,名字叫做 spring-test ,操作如下:
项目创建好了之后,打开 pom.xml 引入依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.yjh</groupId>
<artifactId>spring-test</artifactId>
<version>1.0-SNAPSHOT</version>
<name>spring-test</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<mybatis.version>3.5.7</mybatis.version><!-- 这个版本号写你下载的源码的版本号 -->
<spring.version>5.3.1</spring.version>
<mybatis-spring.version>2.0.6</mybatis-spring.version><!-- 这个版本号写你下载的源码的版本号 -->
<mysql.version>8.0.22</mysql.version>
</properties>
<dependencies>
<!-- spring 相关依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- 数据库驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<!-- mybatis 依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<!-- mybatis-spring 依赖-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${mybatis-spring.version}</version>
</dependency>
<!-- 日志相关依赖 -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.26</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.26</version>
</dependency>
</dependencies>
<build>
<!-- 资源目录 -->
<resources>
<resource>
<!-- 设定主资源目录 -->
<directory>src/main/java</directory>
<!-- maven default生命周期,process-resources阶段执行maven-resources-plugin插件的resources目标处理主资源目下的资源文件时,只处理如下配置中包含的资源类型 -->
<includes>
<include>**/*.xml</include>
</includes>
<!-- maven default生命周期,process-resources阶段执行maven-resources-plugin插件的resources目标处理主资源目下的资源文件时,不处理如下配置中包含的资源类型(剔除下如下配置中包含的资源类型)-->
<excludes>
<exclude>**/*.yaml</exclude>
</excludes>
<!-- maven default生命周期,process-resources阶段执行maven-resources-plugin插件的resources目标处理主资源目下的资源文件时,指定处理后的资源文件输出目录,默认是${build.outputDirectory}指定的目录-->
<!--<targetPath>${build.outputDirectory}</targetPath> -->
<!-- maven default生命周期,process-resources阶段执行maven-resources-plugin插件的resources目标处理主资源目下的资源文件时,是否对主资源目录开启资源过滤 -->
<filtering>true</filtering>
</resource>
</resources>
</build>
</project>
<build>
<finalName>monitor-agent</finalName>
<plugins>
<!-- 指定启动类,将依赖打成外部jar包 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<!-- 生成的jar中,不要包含pom.xml和pom.properties这两个文件 -->
<addMavenDescriptor>false</addMavenDescriptor>
<!-- 清单文件 -->
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>./lib/</classpathPrefix>
<!--<main-class>cn.yjh.MonitorAgent</main-class>-->
</manifest>
<!-- 给清单文件添加键值对(配置文件外置) -->
<manifestEntries>
<Premain-Class>cn.yjh.MonitorAgent</Premain-Class>
</manifestEntries>
</archive>
</configuration>
</plugin>
<!-- 用于拷贝依赖到指定的目录-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy</id>
<phase>compile</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>
${project.build.directory}/lib
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
此处具体测试项目的创建过程我就不写了,想了解的可以查看:mybatis源码环境和测试项目