首页 > 解决方案 > 将 maven Shade 与 Proguard 混合

问题描述

我正在尝试使用 Maven Shade 和 Proguard 进行复杂的构建。问题是我只想混淆我的代码和一些相关的库(在 pom 中声明为依赖项),更多的库存在,pom.xml但我不想用 Proguard 处理它们。

我目前的方法如下:

  1. 用于maven shade生成一个 Jar,其中包含我想要混淆的依赖项以及我的代码。( execution binded to package phase)
  2. 使用 Proguard 混淆代码。( execution binded to package phase)
  3. 通过第二次执行maven shade. ( execution binded to verify phase)

问题是在第三步(第二步shade)中,我进入了最终的 Jar 混淆包和未混淆包。

此外,我还尝试shade在第一步中通过包重命名,但同样的情况发生了,未混淆的代码以及经过混淆的重命名存在于胖 Jar 中。

我尝试的另一件事是在第二个中排除未混淆的包,shade但是我没有从前面的步骤中获得任何代码,只有外部库。

要考虑的任何提示或不同的方法?

标签: javamavenproguardmaven-shade-plugin

解决方案


刚刚通过 Proguard 配置解决了它,只在混淆阶段包括我要混淆的那些库(使用正则表达式进行package选择)。

例如:

`-keep class !com.xxx.**{**}, !com.yyyy.*{**}

谢谢


推荐阅读