首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Maven Proguard插件-“在类路径上找不到proguard.Proguard”错误

Maven Proguard插件-“在类路径上找不到proguard.Proguard”错误
EN

Stack Overflow用户
提问于 2021-08-17 16:56:06
回答 1查看 436关注 0票数 0

我试图混淆一个具有依赖关系的jar(尽管如果我将常规的单个jar设置为inFile,也会出现同样的问题)。

我使用的是Java 8,但我必须使用较新版本的Proguard和Proguard Maven插件,因为它覆盖了一些来自较高版本的jar依赖项(否则我会遇到“不支持的主要-次要版本”问题)。

当执行"mvn clean install“时,该步骤被执行,但我得到了一个"proguard jar not found in pluginArtifacts error”。请参阅下面的日志。

我在Proguard Maven Plugin code中看到,现在(从7.0.0开始)你需要来自com.guardsquare的proguard-base和proguard-core,而不是net.sf.proguard中过时的前一个版本--这个版本没有为以后的jars做好准备。

显然,在我指定的地方找不到proguard jar --我应该如何包含这个依赖项?

我在我的pom中使用了这个:

代码语言:javascript
复制
<build>  
  <plugins>
      <plugin>
        <groupId>com.github.wvengen</groupId>
        <artifactId>proguard-maven-plugin</artifactId>
        <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>
                 <dependencies>
                  <dependency>
                    <groupId>com.guardsquare</groupId>
                    <artifactId>proguard-base</artifactId>
                    <version>7.1.0</version>
                    <scope>runtime</scope>
                  </dependency>
                   <dependency>
                     <groupId>com.guardsquare</groupId>
                     <artifactId>proguard-core</artifactId>
                     <version>7.1.0</version>
                     <scope>runtime</scope>
                   </dependency>
                </dependencies>
            </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>

使用-X调试标志运行它:

代码语言:javascript
复制
[... proguard execution command which ends in:]
-printseeds, 'C:\workspace\xxx\target\proguard_seed.txt', -verbose, -allowaccessmodification, -dontoptimize, -dontshrink, -dontnote, -dontwarn, -keepattributes Signature]
... 
[DEBUG] pluginArtifact: C:\User\myuser\.m2\repository\org\eclipse\sisu\org.eclipse.sisu.inject\0.0.0.M5\org.eclipse.sisu.inject-0.0.0.M5.jar
[DEBUG] pluginArtifact: C:\User\myuser\.m2\repository\org\codehaus\plexus\plexus-component-annotations\1.5.5\plexus-component-annotations-1.5.5.jar
[DEBUG] pluginArtifact: C:\User\myuser\.m2\repository\org\codehaus\plexus\plexus-classworlds\2.4\plexus-classworlds-2.4.jar
[INFO] proguard jar not found in pluginArtifacts
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  40.302 s
[INFO] Finished at: 2021-08-17T18:26:45
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal com.github.wvengen:proguard-maven-plugin:2.3.1:proguard (default) on project xxx: Obfuscation failed ProGuard (proguard.ProGuard) not found in classpath -> [Help 1]

带有依赖项的jar是用Maven Assembly插件生成的。我使用的是Java 1.8。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-19 14:33:08

实际上,我使用的是proguard.ProGuard而不是proguard.Proguard。打字错误耗费了我一天的时间。

然而,如果它对任何人有帮助的话,还有一些额外的棘手之处:proguard-maven-plugin不允许我定义更新版本的proguard依赖项,除了默认的依赖项。例如,2.4.0只允许我使用默认的7.1.0-beta3。它无法识别我将在插件内的dependencies部分中设置的库(例如,用于7.1.1)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68821303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档