Java 如何用proguard混淆多模块spring boot项目?
我试图编译和混淆两个项目,其中一个项目依赖于另一个项目,而这两个项目都是使用SpringBootMaven插件构建的 为了简单起见,让我们调用它们main和util项目 构建分为两个阶段。在第一阶段,构建util项目。在第二阶段,主要项目依赖于util项目 我的问题是SpringBootMaven插件创建了嵌套JAR。() 因此,如果我首先尝试使用SpringBootMaven插件重新打包项目,然后混淆重新打包的jar(其中包含util和主项目),然后首先proguard提取重新打包的jar的内容,其中提取的内容将包含util jar。然后proguard不会混淆这个util jar的内容,因为它是一个jar而不是一组类文件 如果我首先尝试使用proguard混淆util项目,然后使用Spring boot maven插件重新打包,那么混淆将完成,但是当我尝试编译主项目时,它将无法在util项目生成的jar中找到必要的符号Java 如何用proguard混淆多模块spring boot项目?,java,spring-boot,proguard,multi-module,spring-boot-maven-plugin,Java,Spring Boot,Proguard,Multi Module,Spring Boot Maven Plugin,我试图编译和混淆两个项目,其中一个项目依赖于另一个项目,而这两个项目都是使用SpringBootMaven插件构建的 为了简单起见,让我们调用它们main和util项目 构建分为两个阶段。在第一阶段,构建util项目。在第二阶段,主要项目依赖于util项目 我的问题是SpringBootMaven插件创建了嵌套JAR。() 因此,如果我首先尝试使用SpringBootMaven插件重新打包项目,然后混淆重新打包的jar(其中包含util和主项目),然后首先proguard提取重新打包的jar的内
那么如何混淆用Spring boot maven项目重新打包的项目呢?在主模块中声明proguard maven插件和Spring boot maven插件(proguard包阶段必须在Spring boot插件重新打包目标之前执行)。仅在作为入口点的模块中声明它-无需在子模块或父pom中声明它 然后,在您的proguard插件配置中,除了主jar之外,添加您想要混淆的模块:
<configuration>
<assembly>
<inclusions>
<inclusion>
<groupId>com.yourgroupid</groupId>
<artifactId>submodule</artifactId>
</inclusion>
</inclusions>
</assembly>
...
com.yourgroupid
子模块
...
在spring boot maven插件中添加排除,这样spring不会覆盖已经模糊的jar:
<configuration>
<mainClass>
com.yourapp.App
</mainClass>
<excludeGroupIds>com.yourgroupid</excludeGroupIds>
</configuration>
com.yourapp.App
com.yourgroupid
希望它能为你工作 发布您的proguard配置可能会有所帮助。也许proguard配置并不那么重要。更重要的是。这就是为什么在使用SpringBootMaven插件进行重新打包的情况下,混淆不起作用。你救了我!