问题场景
在使用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.pyx4megroupId> <artifactId>proguard-maven-pluginartifactId> <executions> <execution> <phase>packagephase> <goals> <goal>proguardgoal> goals> execution> executions> <configuration> <obfuscate>trueobfuscate> <proguardInclude>${basedir}/proguard.confproguardInclude> <libs> <lib>${java.home}/lib/rt.jarlib> <lib>lib/jsp-api.jarlib> <lib>lib/servlet-api.jarlib> libs> <addMavenDescriptor>falseaddMavenDescriptor> configuration> plugin>问题分析
似乎是proguard-maven-plugin本身并不支持’-keepdirectories’选项!
解决方案如果要支持该选项,需要添加依赖,使用其它版本的proguard
<dependencies> <dependency> <groupId>net.sf.proguardgroupId> <artifactId>proguardartifactId> <version>4.4version> <scope>runtimescope> dependency> dependencies>
注意,这里使用4.4版本的,有文章中使用4.8版本来混淆,但是在Maven的仓库中http://repo1.maven.org/maven2/net/sf/proguard/proguard/ 找不到4.8的版本。