微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Maven生成的uberjar不包含依赖项类

如何解决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 举报,一经查实,本站将立刻删除。