且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

proguard.ParseException: Unknown option '-keepdirectories' in line 57 of file

更新时间:2022-08-31 16:48:50

版权声明:本文为 testcs_dn(微wx笑) 原创文章,非商用***转载-保持署名-注明出处,谢谢。 https://blog.csdn.net/testcs_dn/article/details/45578113

问题场景


在使用Maven + Proguard打包项目进行混淆时,提示以下错误:

[proguard] proguard.ParseException: Unknown option ‘-keepdirectories’ in line 57 of file ‘F:\Workspaces\middle\trunk\proguard.conf’,
[proguard] included from argument number 4
[proguard] at proguard.ConfigurationParser.parse(ConfigurationParser.java:164)
[proguard] at proguard.ProGuard.main(ProGuard.java:491)

Pom配置


            <plugin>
                <groupId>com.pyx4me</groupId>
                <artifactId>proguard-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>proguard</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <obfuscate>true</obfuscate>
                    <proguardInclude>${basedir}/proguard.conf</proguardInclude>
                    <!-- 添加依赖,这里你可以按你的需要修改 -->
                    <libs>
                        <lib>${java.home}/lib/rt.jar</lib>
                        <lib>lib/jsp-api.jar</lib>
                        <lib>lib/servlet-api.jar</lib>
                    </libs>
                    <addMavenDescriptor>false</addMavenDescriptor>
                </configuration>

            </plugin>

问题分析


似乎是proguard-maven-plugin本身并不支持’-keepdirectories’选项!

解决方案


如果要支持该选项,需要添加依赖,使用其它版本的proguard

                <dependencies> 
                    <!-- 使用4.4版本来混淆 -->
                    <dependency>
                        <groupId>net.sf.proguard</groupId>
                        <artifactId>proguard</artifactId>  
                        <version>4.4</version>
                        <scope>runtime</scope>
                    </dependency>
                </dependencies>

注意,这里使用4.4版本的,有文章中使用4.8版本来混淆,但是在Maven的仓库中http://repo1.maven.org/maven2/net/sf/proguard/proguard/
找不到4.8的版本。