我在多模块maven项目中有一个插件参考proguard。
我的项目功能已经过全面测试并且有效...直到我添加proguard。
我的项目结构
parent-pom
-module-a-pom
-module-b-pom
tester-pom
我的proguard配置看起来像这样:
<plugin>
<groupId>com.github.wvengen</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<version>2.0.8</version>
<executions>
<execution>
<id>process-classes-with-proguard</id>
<phase>process-classes</phase>
<goals>
<goal>proguard</goal>
</goals>
<configuration>
<injar>classes</injar>
<proguardVersion>5.1</proguardVersion>
<proguardInclude>${project.basedir}/../proguard.conf </proguardInclude>
<libs>
<lib>${java.bootstrap.classes}</lib>
<lib>${java.secure.socket.extension.classes}</lib>
<lib>${java.cryptographic.extension.classes}</lib>
</libs>
<obfuscate>true</obfuscate>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>net.sf.proguard</groupId>
<artifactId>proguard-base</artifactId>
<version>5.1</version>
<scope>runtime</scope>
</dependency>
</dependencies>
</plugin>
我有一个额外的复杂性,我的项目使用GSON从一个我无法控制的外部组件反序列化一些传入的JSON。
执行proguard作为构建的一部分会导致GSON代码抛出NullPointerExceptions
由proguard影响的代码是:
Gson gson = new Gson();
Type collectionType = new TypeToken<ArrayList<MyType>>(){}.getType();
ArrayList<MyType> myTypes = gson.fromJson(json, collectionType);
如果在我的pom文件中注释了proguard(因此它没有执行),这段代码(以及我项目的其余部分)就像魅力一样。
如何配置proguard来模糊我的代码但不破坏功能?这可能是多模块项目吗?
任何人是否知道如何为多模块maven项目配置proguard?
注意:我已经尝试this,结果似乎没有任何区别。
答案 0 :(得分:2)
我最终得到了这个:
..它有效!