使用Proguard混合Maven阴影

时间:2018-10-16 10:42:45

标签: java maven proguard maven-shade-plugin

我正在尝试使用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,将丢失的依赖项(风暴等)添加到最终的Jar中。 (execution binded to verify phase

问题是,在第三步(第二个shade)中,我进入了最终的Jar,既包含混淆的软件包,也包含未混淆的软件包。

此外,我还尝试在第一步中通过shade重命名这些软件包,但同样的事情是,未混淆的代码以及经过混淆的已重命名的代码位于胖子Jar中。

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

是否有任何建议或其他方法可供考虑?

1 个答案:

答案 0 :(得分:0)

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

例如:

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

谢谢