我正在使用maven-shade插件将Spring Boot应用程序打包成一个超级jar文件。 简单吧? 最近,当我运行mvn clean package
命令时,会收到以下警告:
[WARNING] Discovered module-info.class. Shading will break its strong encapsulation.
实际上它并没有破坏任何东西,但我是一个完美主义者,这让我很疯狂。我该怎么消除它?我尝试了很多方法,但都没有成功。
我正在使用maven-shade插件将Spring Boot应用程序打包成一个超级jar文件。 简单吧? 最近,当我运行mvn clean package
命令时,会收到以下警告:
[WARNING] Discovered module-info.class. Shading will break its strong encapsulation.
实际上它并没有破坏任何东西,但我是一个完美主义者,这让我很疯狂。我该怎么消除它?我尝试了很多方法,但都没有成功。
在shade插件中过滤文件对我来说似乎很有效。
这是我的 maven-shade-plugin
配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.1</version>
<configuration>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>module-info.class</exclude>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
关键是 <exclude>module-info.class</exclude>
这行代码。该筛选器会在任何构件中排除找到的文件(*:*
= 任何构件),此处排除模块信息文件。 (我使用其他三个排除文件来消除依赖项中签名文件的错误)
我没有注意到任何不良副作用,现在警告已经消失了!
<exclude>META-INF/**</exclude>
来完全消除我的项目中的所有警告。 - VapidMETA-INF/**
可能会以难以调试的方式影响应用程序行为。 - Bart Swennenhuis