如何解决Maven生成的uberjar不包含依赖项类
我正在ubuntu 18.04上运行maven 3.6.0。
我的应用程序的pom.xml包含此依赖项;关联的“ neptus”罐子在我的本地.m2 /存储库中:
<dependencies>
<dependency>
<groupId>pt.lsts.neptus</groupId>
<artifactId>neptus</artifactId>
<version>x.x</version>
</dependency>
我的应用程序实际上从“ neptus” jar文件中引用了类,因此我想将这些类包括在项目的uberjar中。因此,pom.xml也包含此内容,改编自http://maven.apache.org/plugins/maven-shade-plugin/examples/includes-excludes.html
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<filters>
<filter>
<artifact>junit:junit</artifact>
<includes>
<include>junit/framework/**</include>
<include>org/junit/**</include>
</includes>
<excludes>
<exclude>org/junit/runners/**</exclude>
</excludes>
</filter>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>meta-inf/*.SF</exclude>
<exclude>meta-inf/*.DSA</exclude>
<exclude>meta-inf/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>
然而,“ mvn clean package”生成的uberjar不包含来自neptus构件的任何类文件,因此我的应用程序为那些缺少的类抛出了java.lang.NoClassDefFoundError。
我在做什么错? 谢谢!
解决方法
默认情况下,if that plugin is enclosed within a pluginManagement block忽略了maven-shade-plugin,就我而言(抱歉,我的原始帖子中未显示)。如果执行此操作,将执行阴影插件 :
export const login = (user) => ({
type: LOGIN_SUCCESS,payload: user,});
export const setUser = (user) => ({
type: USER_LOADED,});
如in this thread所述。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。