java - 将 maven Shade 与 Proguard 混合
问题描述
我正在尝试使用 Maven Shade 和 Proguard 进行复杂的构建。问题是我只想混淆我的代码和一些相关的库(在 pom 中声明为依赖项),更多的库存在,pom.xml
但我不想用 Proguard 处理它们。
我目前的方法如下:
- 用于
maven shade
生成一个 Jar,其中包含我想要混淆的依赖项以及我的代码。(execution binded to package phase
) - 使用 Proguard 混淆代码。(
execution binded to package phase
) - 通过第二次执行
maven shade
. (execution binded to verify phase
)
问题是在第三步(第二步shade
)中,我进入了最终的 Jar 混淆包和未混淆包。
此外,我还尝试shade
在第一步中通过包重命名,但同样的情况发生了,未混淆的代码以及经过混淆的重命名存在于胖 Jar 中。
我尝试的另一件事是在第二个中排除未混淆的包,shade
但是我没有从前面的步骤中获得任何代码,只有外部库。
要考虑的任何提示或不同的方法?
解决方案
刚刚通过 Proguard 配置解决了它,只在混淆阶段包括我要混淆的那些库(使用正则表达式进行package
选择)。
例如:
`-keep class !com.xxx.**{**}, !com.yyyy.*{**}
谢谢