前文 说到我最近要维护SDK的代码,然后最近有个问题,就是我们这边使用的一个库和我们的用户使用的这个库冲突了,两边都不好改,我研究了一下,要么我从头写一个,要么只能协调版本号,那么有没有其他简单快捷的方法呢?这就是本文的目的了!就是修改下我这边使用的库的包名就可以了。
资料与介绍
jarjar
github : https://github.com/shevek/jarjar
googlecode : https://code.google.com/archive/p/jarjar/
download
Jar Jar Links是一个实用程序,可以轻松地重新打包Java库并将它们嵌入到您自己的发行版中。 这有用有两个原因:
- 您可以轻松地发送没有外部依赖项的单个jar文件。
- 您可以避免库依赖于库的特定版本的问题,这可能与另一个库的依赖项冲突。
它是如何工作的?
Jar Jar Links包含一个扩展内置jar任务的Ant任务。 普通的zipfileset元素用于嵌入jar文件。 添加了一个新的规则元素,它使用通配符模式重命名嵌入的类文件。 字节码转换(通过ASM)用于更改对重命名类的引用,并为移动资源文件和转换字符串文字提供特殊处理。
使用方法
java -jar jarjar-1.4.jar process rules.txt google-collections-1.0.jar google-collections-old-1.0.jar
rules.txt
rule com.google.** com.googleold.@1
参考资料:
1,https://stackoverflow.com/questions/13746737/hand-edit-a-jar-to-change-package-names
2,https://github.com/shevek/jarjar