多个maven模块项目的proguard

时间:2014-12-27 07:07:38

标签: java json maven gson proguard

我在多模块maven项目中有一个插件参考proguard。

我的项目功能已经过全面测试并且有效...直到我添加proguard。

我的项目结构

parent-pom  
  -module-a-pom  
  -module-b-pom

tester-pom
  1. module-b依赖于module-a。
  2. module-a和module-b都安装在我的本地maven存储库中。
  3. tester依赖于module-a和module-b。
  4. 我的proguard.conf文件位于文件系统上的parent-pom pom.xml文件旁边。
  5. 我在module-a和module-b pom.xml文件中配置proguard。
  6. 我的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,结果似乎没有任何区别。

1 个答案:

答案 0 :(得分:2)

我最终得到了这个:

  1. 使用Windows Proguard应用程序并通过向导选择相对基本的设置
  2. 导出配置
  3. 闭上眼睛,按下go按钮。
  4. ..它有效!