Java Proguard-如何使用共享输入jar创建多个输出jar
例如,我希望每个输出jar都包含它上面的两个injar:Java Proguard-如何使用共享输入jar创建多个输出jar,java,ant,build,proguard,Java,Ant,Build,Proguard,例如,我希望每个输出jar都包含它上面的两个injar: # Windows Client -injars common.jar -injars windowsClient.jar -outjar windowsClient.jar # Mac Client -injars common.jar -injars macClient.jar -outjar macClient.jar # Windows Server -injars common.jar -injars windowsSer
# Windows Client
-injars common.jar
-injars windowsClient.jar
-outjar windowsClient.jar
# Mac Client
-injars common.jar
-injars macClient.jar
-outjar macClient.jar
# Windows Server
-injars common.jar
-injars windowsServer.jar
-outjar windowsServer.jar
# Mac Server
-injars common.jar
-injars macServer.jar
-outjar macServer.jar
因此,这是可行的,只包括每个jar的特定代码。问题是,我还从proguard收到了大量“程序类定义重复”警告。我想这是因为复制了-injars common.jar
,但我不知道如何解决这个问题。如果我从每个分组中删除-injars common.jar
,那么我会得到一个关于必须使用过滤器的错误
例如,有没有一种方式可以说:
# Windows Server (3 step)
-removeJars macClient.jar
-injars ...
-outjars windowsServer.jar
ProGuard的意图是忽略重复的输入类(除了打印注释之外),并将每个处理过的类写入一个jar。您可以为commons.jar创建一个单独的输出jar,然后将其合并到其他jar中 您的技巧恰好奏效,因为多次读取同一commons.jar的效率有点低。您可以使用
-dontnote
抑制警告
注:
- 输入jar和输出jar的名称必须不同
- 您可能希望禁用类合并(
),以防止类在JAR之间迁移-optimizations!class/merging/*