我尝试编译和混淆两个项目,其中一个项目依赖于另一个项目,两个项目都是使用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项目重新打包的项目进行模糊处理呢?
发布于 2019-09-17 01:30:19
在你的主模块中声明proguard-maven-plugin和spring- boot -maven-plugin (proguard包阶段必须在spring引导插件重新打包目标之前执行)。只在模块中声明它,这是入口点-不需要在子模块或父pom中声明它。
然后,在你的proguard插件配置中,在main jar之外添加你想要混淆的模块:
<configuration>
<assembly>
<inclusions>
<inclusion>
<groupId>com.yourgroupid</groupId>
<artifactId>submodule</artifactId>
</inclusion>
</inclusions>
</assembly>
...并且在spring-boot-maven-plugin中添加exclusion,这样spring就不会覆盖已经混淆的jar:
<configuration>
<mainClass>
com.yourapp.App
</mainClass>
<excludeGroupIds>com.yourgroupid</excludeGroupIds>
</configuration>希望它能为你工作!
https://stackoverflow.com/questions/54845514
复制相似问题