MyBatis源码本地编译
为什么需要在本地编译源码
我们在看框架源码的时候,如果没有注释,看起来会比较吃力。所以如果能够一边看源码一边自己加中文注释,下次阅读的时候就会轻松很多。
问题是:通过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-31mvn install
接下来编译mybatis工程,进入mybatis-3目录,切换到3.5.4分支(任意分支,但是不能在默认的master分支中编译)。
cd ../mybatis-3git checkout mybatis-3.5.4mvn cleanmvn 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工程编译一次即可。
MyBatis源码本地编译相关推荐
- 物联网ThingsBoard源码本地编译篇,超详细教程,小白看过来!
编译准备 我用的是 IDEA2021 maven3.6.3 下载地址 Index of /dist/maven/maven-3/3.6.3/binaries (apache.org) jdk11.0. ...
- Windows:kibana 源码本地编译--v6.4.1
1.预安装 nodejs 8.11.4 yarn latest版本 npm install -g yarn@1.7.0-全局安装yarn,高版本yarn容易报错 对应版本的es,本地安装的是6.4.1 ...
- Kettle源码本地编译运行
1.开发环境准备 JDK1.8 Maven3.8.1 2.源码下载 官网下载 注意:下载后面有-R的包,这才是真正的源码 3.编译运行 本地Windows编译可能会遇到一些问题,基本网上搜搜都能解决, ...
- idea下编译mybatis源码
前段时间笔者在专心研究Netty源码,Netty源码研究已经告一段落了.接下来就是开启我们的Mybaits源码的征程.首先我们要开始编译Mybatis源码. 下载源码 我们先去的GitHub上面找到对 ...
- mybatis源码编译出现问题
1 mybatis-3 下载GitHub源码后 pom文件 <parent><groupId>org.mybatis</groupId><artifactI ...
- MyBatis源码-解读Executor的三个实现类之SimpleExecutor(简单执行器)
文章目录 Pre Executor 执行器 接口继承关系 SimpleExecutor(简单执行器) 入门小demo 实例化SimpleExecutor doQuery方法 Pre MyBatis源码 ...
- MyBatis源码-深入理解MyBatis Executor的设计思想
文章目录 Pre JDBC的执行过程 JDBC Demo JDBC Statement 接口 MyBatis执行过程 四大组件 组件之间的关系 Executor 执行器组件 架构总览 接口继承关系 P ...
- MyBatis 源码分析 - SQL 的执行过程
本文速览 本篇文章较为详细的介绍了 MyBatis 执行 SQL 的过程.该过程本身比较复杂,牵涉到的技术点比较多.包括但不限于 Mapper 接口代理类的生成.接口方法的解析.SQL 语句的解析.运 ...
- MyBatis 源码分析系列文章导读
1.本文速览 本篇文章是我为接下来的 MyBatis 源码分析系列文章写的一个导读文章.本篇文章从 MyBatis 是什么(what),为什么要使用(why),以及如何使用(how)等三个角度进行了说 ...
- mybatis源码阅读(六) ---StatementHandler了解一下
转载自 mybatis源码阅读(六) ---StatementHandler了解一下 StatementHandler类结构图与接口设计 BaseStatementHandler:一个抽象类,只是实 ...
最新文章
- Verilog如何避免Latch
- 2017尼毕鲁笔试算法题
- 超全超详细的HTTP状态码大全
- Permutation(构造+思维)
- mysql week统计_MySQL按周统计 WEEK 实例
- Go,11 岁生日快乐!
- c语言电子时钟设计报告,电子时钟设计实验报告.doc
- 战略分析思路——沙盘推演逻辑
- RGSSAD解密程序(基于RgssadUnpacker改进以支持RGSS3A)
- win10开机自动打开http://go.microsoft.com/fwlink/?LinkID=219472clcid=0x409
- 做软文营销发布有哪些常见平台?
- Java----线程学习(多线程)
- w7系统路由器虚拟服务器怎么设置方法,win7路由器怎么重新设置
- 区块链是什么意思?区块链的概念及特点
- 基于ZigBee的家居控制系统的设计与应用
- 10个程序员可以接私活的平台和一些建议!
- cannot be cast to javax.servlet.Servlet 解决
- codevs 2833 奇怪的梦境
- ESP8266,电脑作为TCP SERVER,8266发数据给电脑
- android 图片合成