【发布时间】:2020-02-10 08:51:00
【问题描述】:
我在我的多模块 maven 项目中使用了 proguard-maven-plugin 和 spring boot。绝不,我不是专家,还在学习如何使用 ProGuard 提供的所有功能,所以请多多包涵。 ProGuard 依赖:
<groupId>com.github.wvengen</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<version>2.1.1</version>
最终产品是一个 .jar 文件,它依赖于具有核心功能的成功混淆模块。使用maven编译打包product jar后,其结构如下(使用jd-gui-1.6.6查看product jar内容):
BOOT-INF
|_classes
|_com.my.package
|_a(ObfuscatedModule package after obfuscation)
|_b.class
|_c.class
|_...
|_Main.class
|_...
|_lib
|_ObfuscatedModule.jar
|_NonObfuscatedClass1.class
|_NonObfuscatedClass2.class
|_NonObfuscatedClass3.class
|_...
META-INF
org.springframework.boot.loader
由于混淆的目的是隐藏具有核心功能的模块,我还想从产品 jar 内的 lib 目录中排除。经过proguard examples之后,我还没有找到方法。是否可以排除或至少混淆/lib 中的核心 .jar 模块?
编辑:我试图通过使用 maven-shade-plugin 创建一个 uber JAR 来绕过生成一个具有依赖项的单独文件夹。使用时,它将所有依赖项添加到类路径中,然后使用 ProGuard 插件来混淆需要混淆的内容。项目结构看起来令人满意,依赖项添加到类路径并正确混淆。但是当我尝试运行阴影 jar 时,我不断收到以下错误:
错误:无法找到或加载主类 com.my.package.Main
在 jar 中找到 Main 类,我知道它与最初的问题无关,但我已经求助于在 SO 和互联网上找到的所有可能的解决方案 - 不走运。
【问题讨论】:
标签: java spring-boot proguard-maven-plugin