Java Proguard-如何使用共享输入jar创建多个输出jar

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

例如,我希望每个输出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 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的名称必须不同
  • 您可能希望禁用类合并(
    -optimizations!class/merging/*
    ),以防止类在JAR之间迁移

如何在Proguard 5中实现这一点,有什么想法吗?