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