这是我的问题...
我正在使用maven-shade插件将Spring Boot应用程序打包到uber jar中。简单吧?好吧,除了最近为止,我在mvn clean package
的末尾收到以下警告:
[WARNING] Discovered module-info.class. Shading will break its strong encapsulation.
实际上并没有破坏任何东西,但是我是一个完美主义者,这让我发疯了吗?我如何摆脱它?我尝试了很多事情,但没有成功。
请帮助:(
答案 0 :(得分:1)
正如评论中提到的那样,过滤掉shade插件中的文件似乎对我来说很好。
这是我的maven-shade-shade
插件配置的样子:
<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>
。过滤器会在任何人为因素(*:*
=任何人为因素)看到的文件中排除该文件。 (另外三个排除了我用来摆脱依赖项中的签名文件的错误)
我没有注意到这样做带来的任何不良副作用,现在警告消失了!