2016-04-22 9 views
0

Ich schreibe ein Plugin API für meine Anwendung. Das Problem ist nun, dass alles in meiner Maven Proguard Config die parametrierten Map s, List s und andere parametrierte Objekte durcheinander gebracht hat.Parametrierte Karte nicht parametrisiert nach Proguard-Verschleierung

So habe ich diesen Code:

public final Map<String, PermissionGroup> getPermissionGroups() { 
    return Vars.PERMGROUPS; 
} 

Vars.PERMGROUPS ist dies:

public static final Map<String, PermissionGroup> PERMGROUPS = new HashMap<>(); 

So, jetzt, wenn ich getPermissionGroups nennen erhalte ich eine Map ohne Parameter.

pom.xml

... 
     <plugin> 
      <groupId>com.github.wvengen</groupId> 
      <artifactId>proguard-maven-plugin</artifactId> 
      <version>2.0.11</version> 
      <executions> 
       <execution> 
        <phase>package</phase> 
        <goals> 
         <goal>proguard</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <obfuscate>true</obfuscate> 
       <injar>${project.build.finalName}.jar</injar> 
       <outjar>${project.build.finalName}-final.jar</outjar> 
       <includeDependency>true</includeDependency> 
       <options> 
        <option>-keep public class my.package.Main { public static void main(java.lang.String[]); }</option> 
        <option>-keep public class my.package.plugins.** { *; }</option> 
        <option>-keep public class my.package.wrapper.** { *; }</option> 
        <option>-dontusemixedcaseclassnames</option> 
        <option>-dontskipnonpubliclibraryclasses</option> 
        <option>-verbose</option> 
        <option>-obfuscationdictionary dict.txt</option> 
        <option>-classobfuscationdictionary dict.txt</option> 
        <option>-packageobfuscationdictionary dict.txt</option> 
       </options> 
       <libs> 
        <lib>${java.home}/lib/rt.jar</lib> 
        <lib>${java.home}/lib/jce.jar</lib> 
       </libs> 
       <assembly> 
        <inclusions> 
         ... 
        </inclusions> 
       </assembly> 
       <archive> 
        <manifest> 
         <mainClass>my.package.Main</mainClass> 
        </manifest> 
       </archive> 
      </configuration> 
      <dependencies> 
       <dependency> 
        <groupId>net.sf.proguard</groupId> 
        <artifactId>proguard-base</artifactId> 
        <version>4.11</version> 
        <scope>runtime</scope> 
       </dependency> 
      </dependencies> 
     </plugin> 
... 

gibt es nur 20000 zufälligen Zeichenfolgen in dict.txt.

Antwort