将 Maven Shade 与 Proguard 混合

Mixing maven Shade with 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 将缺少的依赖项(Storm 等)添加到最终的 Jar 中。 (execution binded to verify phase)

问题是,在第三步(第二步 shade)中,我在最后的 Jar 中同时获得了混淆包和未混淆包。

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

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

有什么提示或不同的方法可以考虑吗?

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

例如:

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

谢谢