Proguard不会查看嵌入式jar进行参考查找

时间:2012-06-08 12:52:04

标签: java osgi proguard

我正在尝试使用proguard来混淆捆绑包。由于项目特定的原因,我的包中有库包,例如:

bundle.jar
   |
   |-META-INF
   |
   |-library.jar
   |
   \-org (and the rest of my source tree)

META-INF中的Manifest.mf文件包含以下行:

Bundle-ClassPath: .,library.jar

这都是自动生成的并且很好。

现在,问题来自于proguard试图模糊来自library.jar的方法(假设我有充分的理由这样做)。在这些情况下,它不会找到library.jar,因为它不是依赖库的一部分,而proguard似乎忽略了清单文件中的Bundle-Classpath条目。

所以,问题是:这可以完成吗?或者是完全osgi不可知的proguard并且根本无法处理这些标签?有没有办法可以为proguard提供in-jar依赖?

谢谢!

3 个答案:

答案 0 :(得分:2)

为什么不在与Proguard混淆之后用它的嵌入式JAR 组装捆绑包,而不是之前?

答案 1 :(得分:2)

是的,ProGuard完全与OSGi无关。它故意独立于任何平台。

此外,ProGuard处理类文件,可选择在jar内,可选择在内部战争中,可选择在内部耳内,可选择在内部拉链内,但不包括jar内jars内的类文件。

(CFR)。 ProGuard手册>用法>类路径。

答案 2 :(得分:1)

如果你使用bnd(maven,bndtools等),你可以展开一个jar文件。使用以下说明:

 Include-Resource: @library.jar

在这种情况下,您将获得一个也可以在类路径上使用的普通JAR。这应该对混淆器没有问题。如果要从此库导出包,请使用-exportcontents而不是Export-Package,它们都具有相同的语法。