【问题标题】:Mixing maven Shade with Proguard将 maven Shade 与 Proguard 混合
【发布时间】:2018-10-16 10:42:44
【问题描述】:

我正在尝试使用 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 重命名这些包,但同样的情况发生了,未混淆的代码以及经过混淆的重命名后的代码都存在于胖 Jar 中。

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

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

【问题讨论】:

  • 我可以看看 pom.xml 吗?
  • 嗨,感谢您的关注。今天早上刚刚通过 Proguard 配置解决了。不过,我认为我需要重新研究Shade 插件的工作原理
  • 在使用多模块项目的 maven-proguard-plugin 进行混淆时,我遇到了很多关于 spring 和 shade 的问题。祝你好运。

标签: java maven proguard maven-shade-plugin


【解决方案1】:

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

例如:

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

谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-19
    • 2013-02-19
    • 1970-01-01
    • 1970-01-01
    • 2015-08-20
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多