Maven系列之替换jar包中的类
在maven项目中引入第三方jar包时,某些特殊情况下第三方jar包无法满足我们的需求,这时可以对第三方jar包某些类进行修改,重新依赖新的jar包。
一,准备
本文替换的jar包是littleproxy,在替换前新建一个maven项目demo,引入依赖littleproxy,pom文件如下:
1 | <?xml version="1.0" encoding="UTF-8"?> |
引入依赖成功后下载littleproxy的source文件,可以在idea的maven视图中下载。
二,替换
根据不同的情况替换你想要替换的类,例如将ProxyUtils类的stripHost方法输出一下uri,在替换前该方法是:
1 | public static String stripHost(final String uri) { |
首先找到ProxyUtils的完整包名,在idea中搜索到ProxyUtils的完整包名是org.littleshoot.proxy.impl,为了防止包名不一致,所以在demo项目中新建一个包名org.littleshoot.proxy.impl,将littleproxy的source中的ProxyUtils拷贝至demo项目中,最终效果如下:
这时在stripHost方法中添加输出uri:
1 | public static String stripHost(final String uri) { |
在demo项目下新建libs目录,找到littleshoot在本地maven仓库的jar包littleproxy-1.1.2.jar,复制后粘贴到libs,如下所示:
编译ProxyUtils,用winrar打开libs下的littleproxy-1.1.2.jar,删除ProxyUtils.class,将编译后的ProxyUtils.class文件复制粘贴进去替换。修改pom文件如下所示:
更新jar包可以使用jar -uvf littleproxy-1.1.2.jar ProxyUtils.class所在目录/ProxyUtils.class文件
1 | <?xml version="1.0" encoding="UTF-8"?> |
这时所引入的依赖就是修改后的littleshoot。