依赖项是否应该与 Maven jar 工件一起打包?
Sonatype 的 Maven:完整参考 表示编译范围依赖项位于所有类路径上,并与工件一起打包。
Compile 是默认范围;所有依赖项都是编译范围的,如果 未提供范围。编译依赖项在所有可用 类路径,并且它们被打包。
但我看不到它们已包装。 。 。这不是意味着它们应该包含在 jar 文件中吗?如果不是,那意味着什么?
Sonatype's Maven:The Complete Reference says that a compile scoped dependency is on all classpaths and is packaged with the artifact.
Compile is the default scope; all dependencies are compile-scoped if a
scope is not supplied. compile dependencies are available in all
classpaths, and they are packaged.
I can't see that they are packaged though . . . doesn't this mean that they should be contained in the jar file? If not, what does it mean?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你是对的。编译的范围依赖项不会与输出 jar 一起打包。 (使用 JAR 插件)。我认为“包”是指最终产品(二进制可执行文件)。
我遇到了这个 stackOverflow 线程(我怎样才能使用 Maven 创建一个具有依赖项的可执行 jar?)。在这里,他们打包所有依赖项以从 Main 类构建可执行文件。在这种情况下,您需要打包的可执行文件中的所有编译时依赖项。 (由于 JAVA 延迟加载,这不是必须的,但最好具有所有编译时依赖项)
You are correct. Compiled scope dependencies does not get packaged with the output jar. (with JAR plugin). I think the 'package' refers to the end product (binary executable).
I came across this stackOverflow thread (How can I create an executable jar with dependencies using Maven?). Here they are packaging all the dependencies to build a executable out of Main class. In that case you need all the compile time dependencies in your packaged executable. (since JAVA lazy loads it is not a must, but preferable to have all the compile time dependencies)