Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何用proguard混淆多模块spring boot项目?_Java_Spring Boot_Proguard_Multi Module_Spring Boot Maven Plugin - Fatal编程技术网

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

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的内

我试图编译和混淆两个项目,其中一个项目依赖于另一个项目,而这两个项目都是使用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中找到必要的符号


那么如何混淆用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插件进行重新打包的情况下,混淆不起作用。你救了我!