標籤:maven 打包 version proguard ioexceptio
問題情境
在使用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
<injar>${project.build.finalName}.war</injar>
完整樣本:
<plugin> <groupId>com.pyx4me</groupId> <artifactId>proguard-maven-plugin</artifactId> <version>2.0.4</version> <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> <injar>${project.build.finalName}.war</injar> <outjar>${project.build.finalName}-pg.war</outjar> <outputDirectory>${project.build.directory}</outputDirectory> </configuration> <dependencies> <!-- 使用4.4版本來混淆 --> <dependency> <groupId>net.sf.proguard</groupId> <artifactId>proguard</artifactId> <version>4.4</version> <scope>runtime</scope> </dependency> </dependencies> </plugin>
java.io.IOException: The input doesn't contain any classes. Did you specify the proper '-injars' opt