为什么需要在本地编译源码
我们在看框架源码的时候,如果没有注释,看起来会比较吃力。所以如果能够一边看源码一边自己加中文注释,下次阅读的时候就会轻松很多。
问题是:通过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;
接下来就可以开始我们的源码分析之旅了。
注意
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/16846.html