【问题标题】:Does Maven package dependencies by default? [duplicate]Maven是否默认打包依赖项? [复制]
【发布时间】:2018-04-23 05:45:56
【问题描述】:

我有一个具有某些依赖项的 Maven 项目。依赖项之一是:

<dependency>
    <groupId>net.java.dev.jna</groupId>
    <artifactId>jna</artifactId>
    <version>4.5.0</version>
</dependency>

只要我在 Eclipse 中工作,一切都很好。但是当我打包并尝试使用生成的 jar 文件时(如果重要,从命令行),我收到以下错误消息:

Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/jna/NativeLibrary

虽然这个类在 IDE 中绝对可以访问。

我的猜测是 Maven 默认情况下不会打包项目的依赖项,但在这种情况下,为什么我不会收到更多错误消息来抱怨更多未找到的类?

【问题讨论】:

  • 是jar项目还是war项目?
  • @sidgate 你好,包装设置为jar
  • @D.B.修改问题

标签: java maven dependencies packaging


【解决方案1】:

Maven 只会为您的项目/组件创建一个 jar。这不包括外部 jars(依赖项)。如果你想/需要在你的 jar 中包含依赖项的内容,你应该创建一个 fat jar 或 uber jar。对于 uber jar,您可以使用shade plugin

【讨论】:

  • 感谢您的回答。这是我的猜测,但我如何解释它没有抱怨该项目具有的其他几十个依赖项这一事实?
  • 可能是因为它们还没有被 ClassLoader 加载。
  • 或者那些已经存在于你的类路径中
猜你喜欢
  • 1970-01-01
  • 2013-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-14
  • 1970-01-01
相关资源
最近更新 更多