首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用proguard混淆多模块spring-boot项目?

如何用proguard混淆多模块spring-boot项目?
EN

Stack Overflow用户
提问于 2019-02-24 03:45:09
回答 1查看 547关注 0票数 1

我尝试编译和混淆两个项目,其中一个项目依赖于另一个项目,两个项目都是使用Spring boot maven插件构建的。

为了简单起见,让我们称它们为main和util项目。

构建过程分为两个阶段。在第一阶段中,构建了util项目。在第二阶段,依赖于util项目的主项目。

我的问题是Spring boot maven插件会创建嵌套的jars。(https://docs.spring.io/spring-boot/docs/current/reference/html/executable-jar.html)

因此,如果我首先尝试使用Spring boot maven插件重新打包项目,然后对包含util和主项目的重新打包的jar进行模糊处理,那么首先proguard提取重新打包的jar的内容,其中提取的内容将包含util jar。那么proguard就不会混淆这个util jar的内容,因为它是一个jar,而不是一组类文件。

如果我首先尝试使用proguard混淆util项目,然后使用Spring boot maven插件重新打包,那么混淆就会完成,但是当我尝试编译主项目时,它将在从util项目生成的jar中找不到必要的符号。

那么如何对用Spring boot maven项目重新打包的项目进行模糊处理呢?

EN

回答 1

Stack Overflow用户

发布于 2019-09-17 01:30:19

在你的主模块中声明proguard-maven-plugin和spring- boot -maven-plugin (proguard包阶段必须在spring引导插件重新打包目标之前执行)。只在模块中声明它,这是入口点-不需要在子模块或父pom中声明它。

然后,在你的proguard插件配置中,在main jar之外添加你想要混淆的模块:

代码语言:javascript
复制
             <configuration>
                <assembly>
                    <inclusions>
                        <inclusion>
                            <groupId>com.yourgroupid</groupId>
                            <artifactId>submodule</artifactId>
                        </inclusion>
                    </inclusions>
                </assembly>
                ...

并且在spring-boot-maven-plugin中添加exclusion,这样spring就不会覆盖已经混淆的jar:

代码语言:javascript
复制
            <configuration>
                <mainClass>
                    com.yourapp.App
                </mainClass>
                <excludeGroupIds>com.yourgroupid</excludeGroupIds>
            </configuration>

希望它能为你工作!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54845514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档