当你需要将依赖的jar都放入到你自己的jar中,同时不想做繁琐的重命名工作,那现在我介绍的这款工具就能帮到你了。
http://code.google.com/p/jarjar/
这里看下wiki中的 CommandLineDocs
http://code.google.com/p/jarjar/wiki/CommandLineDocs
比较有用的就是
java -jar jarjar.jar find <level> <cp1> [<cp2>]
这里level 只能是 class 或者 jar,这个命令的功能是查找某个class是否在这个jar中,或者这2个jar是否依赖
cp1如果是类名的话,需要是完整的包路径名。例如想看某个class被哪些jar依赖了就可以用这个命令。
java -jar jarjar.jar process <rulesFile> <inJar> <outJar>
这个命令就是做重命名的功能了,因为他默认使用的是StandaloneJarProcessor,所以针对inJar只能是单独的一个jar文件,如果想一次性把多个jar合并到一个中去,写个ant配置就搞定了,不过自己扩展下也可以的。
这里的outJar 你可以理解为最终合并后jar文件的名字。
我这里给出一个简单的ruleFile的例子,文件是简单的文本文件例如rule.txt
rule org.** org.example.@1
这里解释下**的意思,**就是说所有以org开头的包,如果你是*的话,意思是有一个org开头的包,如果希望做所有替 换,一般用**就可以了,@#的意思是匹配的分组,可以理解为正则表达式的分组。
至于ant的使用,看他的quickStart很容易理解的,这里就不啰嗦了。