Maven Proguard插件报错proguard.Proguard not found on classpath问题问询
问题原因及修正方案
核心错误点
- 依赖放置位置错误:你将
proguard-base、proguard-core两个依赖写在了<execution>下的<configuration>标签内,Maven不会将该位置的依赖加载到插件类路径中,导致插件无法识别ProGuard安装包。 - 插件版本不匹配:debug日志显示实际执行的插件版本为2.3.1,和pluginManagement中声明的2.4.0不一致,未正确继承版本配置。
- 依赖scope配置冗余:插件依赖无需设置
runtimescope,该配置会影响类加载。
修正后的POM配置
<build> <plugins> <plugin> <groupId>com.github.wvengen</groupId> <artifactId>proguard-maven-plugin</artifactId> <!-- 显式指定版本,确保和pluginManagement一致 --> <version>2.4.0</version> <!-- ProGuard依赖要放在plugin层级下,而非configuration内部 --> <dependencies> <dependency> <groupId>com.guardsquare</groupId> <artifactId>proguard-base</artifactId> <version>7.1.0</version> </dependency> <dependency> <groupId>com.guardsquare</groupId> <artifactId>proguard-core</artifactId> <version>7.1.0</version> </dependency> </dependencies> <executions> <execution> <phase>package</phase> <goals><goal>proguard</goal></goals> <configuration> <injar>${project.build.finalName}-jar-with-dependencies.jar</injar> <outjar>${project.build.finalName}-small.jar</outjar> <proguardVersion>7.1.0</proguardVersion> <options> <option>-allowaccessmodification</option> <option>-dontoptimize</option> <option>-dontshrink</option> <option>-dontnote</option> <option>-dontwarn</option> <!-- added option to ignore com.sun missing classes --> <option>-keepattributes Signature</option> </options> <libs> <lib>${java.home}/lib/rt.jar</lib> </libs> </configuration> </execution> </executions> </plugin> </plugins> <pluginManagement> <plugins> <plugin> <groupId>com.github.wvengen</groupId> <artifactId>proguard-maven-plugin</artifactId> <version>2.4.0</version> </plugin> </plugins> </pluginManagement> </build>
补充验证操作
如果修改后依然报错,可先执行mvn clean install -U强制更新依赖快照,清理本地仓库中旧版本的proguard相关缓存后再重新构建。
内容的提问来源于stack exchange,提问作者xmar
相关产品推荐
相关产品推荐

