MyBatis源码本地编译

导读:本篇文章讲解 MyBatis源码本地编译,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

为什么需要在本地编译源码

我们在看框架源码的时候,如果没有注释,看起来会比较吃力。所以如果能够一边看源码一边自己加中文注释,下次阅读的时候就会轻松很多。

问题是:通过maven下载的jar,查看源码,实际上看到的是经过反编译的class文件,是不能够修改的(提示:file is read only)。

如果把当前maven下载的jar包强行关联到自己下载的源码,又有可能会出现字节码跟源码文件不一致的情况(提示:Library source does not match the bytecode for class),导致debug的时候无法进入代码。

如果要保证源码和字节码一致,最好的办法当然是在本地把下载的源码编译生成jar包,上传到本地maven仓库,再引用这个jar。

配置MAVEN

因为需要用Maven打包编译源代码,所以第一步是检查Maven的配置。确保mvn命令可以使用。

这一步大家自行搜索。

手动编译源码

为了方便我们在看源码的过程中能够方便的添加注释,我们可以自己来从官网下载源码编译生成对应的Jar包,然后上传到本地maven仓库,再引用这个Jar。大家可以自行去官网下载:

因为MyBatis源码编译依赖parent项目的源码,所以第一步是编译parent项目。

git clone https://github.com/mybatis/parent 
git clone https://github.com/mybatis/mybatis-3

打开mybatis-3中的pom.xml文件,查看parent的版本号,例如:

  <parent>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-parent</artifactId>
    <version>31</version>
    <relativePath />
  </parent>

确定parent版本是31(记住这个数字)。

把mybatis版本号改成自定义的版本号,避免跟官方版本号冲突(加上了-chen):

<artifactId>mybatis</artifactId>
<version>3.5.8-chen</version>
<packaging>jar</packaging>

进入parent目录,切换项目分支(不能在默认的master分支中编译),工程名后面的数字就是前面看到的parent版本号。

开始编译parent项目:在parent项目中打开 git bash

git checkout mybatis-parent-31
    
mvn install

在这里插入图片描述

接下来编译mybatis工程,进入mybatis-3目录,切换到3.5.4分支(任意分支,但是不能在默认的master分支中编译)。

cd ../mybatis-3
    
git checkout mybatis-3.5.4

mvn clean

mvn install -DskipTests=true -Dmaven.test.skip=true -Dlicense.skip=true

在这里插入图片描述
这样我们在本地仓库就可以看到我们编译好的源码了。jar包的名字是由于我在pom文件中写成3.5.8了…
在这里插入图片描述

关联JAR包到源码

我们本地编译好了源码,这时我们就可以在我们的项目中来使用源码了。首先依赖要改变下:

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.8-chen</version>
</dependency>

然后修改配置 Project Structure —— Libries —— Maven: org.mybatis:mybatis:3.5.8-chen ——在原来的Sources上面点+(加号) —— 选择到下载的源码路径
在这里插入图片描述

添加注释

我们可以随意打开一个源码内部的类,比如BaseTypeHandler
在这里插入图片描述
在这里插入图片描述
接下来就可以开始我们的源码分析之旅了。

注意

  • 然后如果出现mybatis的相关源码查找不到等异常情况,就执行如下操作 File –> Invalidate Caches and Restart 重启IDE就可以了
    在这里插入图片描述
  • 如果添加注释导致了debug的当前行跟实际行不一致,再把mybatis3工程编译一次即可。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/16846.html

(0)
小半的头像小半

相关推荐

极客之家——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!