Maven-如何删除阴影.jar的module-info.class警告?

时间:2019-05-09 16:10:57

标签: java maven maven-shade-plugin uberjar module-info

这是我的问题...

我正在使用maven-shade插件将Spring Boot应用程序打包到uber jar中。简单吧?好吧,除了最近为止,我在mvn clean package的末尾收到以下警告:

[WARNING] Discovered module-info.class. Shading will break its strong encapsulation.

实际上并没有破坏任何东西,但是我是一个完美主义者,这让我发疯了吗?我如何摆脱它?我尝试了很多事情,但没有成功。

请帮助:(

1 个答案:

答案 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>。过滤器会在任何人为因素(*:* =任何人为因素)看到的文件中排除该文件。 (另外三个排除了我用来摆脱依赖项中的签名文件的错误)

我没有注意到这样做带来的任何不良副作用,现在警告消失了!