问题场景
在使用Maven + Proguard打包项目进行混淆时,提示以下错误:
[proguard] ProGuard, version 4.4 [proguard] Reading input... [proguard] java.io.IOException: The input doesn't contain any classes. Did you specify the proper '-injars' options? [proguard] at proguard.InputReader.execute(InputReader.java:91) [proguard] at proguard.ProGuard.readInput(ProGuard.java:195) [proguard] at proguard.ProGuard.execute(ProGuard.java:78) [proguard] at proguard.ProGuard.main(ProGuard.java:499)问题分析
缺少injars配置项! -injars {class_path} 指定要处理的应用程序jar,war,ear和目录
解决方案添加injars配置项,由于是Web项目,所以这里指定的是war
${project.build.finalName}.war
完整示例:
<plugin> <groupId>com.pyx4megroupId> <artifactId>proguard-maven-pluginartifactId> <version>2.0.4version> <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> <injar>${project.build.finalName}.warinjar> <outjar>${project.build.finalName}-pg.waroutjar> <outputDirectory>${project.build.directory}outputDirectory> configuration> <dependencies> <dependency> <groupId>net.sf.proguardgroupId> <artifactId>proguardartifactId> <version>4.4version> <scope>runtimescope> dependency> dependencies> plugin>