配置proguard-maven-plugin来过滤库jar的{MET-INF-INF}

时间:2017-10-24 18:07:29

标签: java maven log4j proguard

我正在尝试使用ProGuard来混淆我的Java 8 jar。我在我的pom.xml文件中配置ProGuard插件时遇到问题,以便将我需要的配置发送到ProGuard。

背景

我的一个依赖项依赖于Log4j 2.9.1。我在ProGuard中遇到了一个记录良好的错误 - https://sourceforge.net/p/proguard/bugs/665/

它建议将一个过滤器添加到log4j库中以忽略META-INF类。

-libraryjars "log4j-api-2.9.0.jar"(!META-INF/versions/9/**.class)

ISSUE:

我无法成功配置maven插件以将此配置发送到ProGuard。

(注意:maven插件会自动为log4j添加-libraryjars配置,因为它是项目依赖项。)

失败的尝试#1:

我尝试添加排除项以防止自动包含此库,并尝试使用lib条目将其添加到过滤器中。

<exclusions>
  <exclude>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
  </exclude>
</exclusions>
<libs>
  <lib>${env.LOG4J_REPOSITORY}/log4j-api-2.9.1.jar(!META-INF/versions/**.class)</lib>
</libs>

排除成功但lib条目失败。它被视为文件名,因此ProGuard的参数看起来像

-libraryjars, '/mnt/juser/repository/org/apache/logging/log4j/log4j-api/2.9.1/log4j-api-2.9.1.jar(!META-INF/versions/**.class)',

我收到了错误

 [proguard] Error: Can't read [/mnt/juser/repository/org/apache/logging/log4j/log4j-api/2.9.1/log4j-api-2.9.1.jar(!META-INF/versions/**.class)] (No such file or directory)

我尝试在lib声明中添加标点符号

<lib>"${env.LOG4J_REPOSITORY}/log4j-api-2.9.1.jar"(!META-INF/versions/**.class)</lib>

它为ProGuard

创建了这个参数
-libraryjars, '"/mnt/juser/repository/org/apache/logging/log4j/log4j-api/2.9.1/log4j-api-2.9.1.jar"(!META-INF/versions/**.class)',

并因以下错误而失败

[proguard] Error: Can't read [/home/juser/working/"/mnt/juser/repository/org/apache/logging/log4j/log4j-api/2.9.1/log4j-api-2.9.1.jar"(!META-INF/versions/**.class)] (No such file or directory)

未通过试验#2

我尝试使用包含来显式添加带有过滤器的库。

<assembly>
  <inclusions>
    <inclusion>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-api</artifactId>
      <library>true</library>
      <filter>!META-INF/versions/**.class</filter>
    </inclusion>
  </inclusions>
</assembly>

该库被列为-libraryjars条目,但没有过滤器。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。以下配置适用于我:

measure             Deaths  Prevalence
cause     location
sickness1 Alabama    0.045       0.050
sickness2 Alabama    0.001       0.003