Maven是否默认打包依赖项?

时间:2017-11-10 03:36:42

标签: java maven dependencies packaging

我有一个具有某些依赖关系的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并没有打包项目的依赖项,但在这种情况下,为什么我不会收到更多错误消息抱怨更多未找到的类?

1 个答案:

答案 0 :(得分:1)

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