我正在使用来自Jar Jar Links的Ant任务在我的可分发jar文件(example.jar)中嵌入来自第三方jar文件(objenesis)的类。Jar Jar将把类从原始包(org.objenesis)转换成我选择的包。
它可以工作,但它在可分发的jar中留下了空目录。
以下是一个简化的build.xml:
<target name="jar" depends="compile">
<taskdef name="jarjar" classname="com.tonicsystems.jarjar.JarJarTask"
classpath="lib/jarjar-1.1.jar"/>
<jarjar jarfile="dist/example.jar" excludes="org.objenesis.**">
<fileset dir="build/classes/main"/>
<zipfileset src="lib/objenesis-1.2.jar"/>
<rule pattern="org.objenesis.**" result="org.thirdparty.@1"/>
</jarjar>
</target>
example.jar的内容示例包括(不出所料):
org/thirdparty/Objenesis.class
org/thirdparty/ObjenesisBase.class还有这些空目录(不受欢迎):
org/objenesis/
org/objenesis/instantiator/
org/objenesis/instantiator/basic/我的问题是:如何排除这些空目录?
我尝试了"zap“选项(listed in the doc),但不起作用。
发布于 2012-04-06 20:12:13
这似乎是Jar Jar中的一个已知问题,列在他们的问题跟踪器中:http://code.google.com/p/jarjar/issues/detail?q=empty&id=32
鉴于这是近三年前提出的,似乎没有任何吸引力,我想你的选择是贡献一个修复,或解决它。
利用Ant对在复制时删除空目录的支持,解决此问题的Ant目标示例如下:
这有点麻烦,但它能达到你想要的效果。
https://stackoverflow.com/questions/8465504
复制相似问题