gpt4 book ai didi

maven - OSGI Bundle vs jar 依赖

转载 作者:行者123 更新时间:2023-12-04 06:21:23 25 4
gpt4 key购买 nike

我试图了解以下内容之间的区别

    <dependency>
<groupId>com.myspace.order</groupId>
<artifactId>dal</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>


    <dependency>
<groupId>com.myspace.order</groupId>
<artifactId>dal</artifactId>
<version>1.0.0-SNAPSHOT</version>
<type>bundle</type>
</dependency>

dal Artifact 本身具有指定为 bundle 的包装:
<packaging>bundle</packaging>

现在,当我部署 dal Artifact 时,我看到它作为 jar 发布在 repo 中(其中包含 list )。在这种情况下,我对 dal 的依赖应该是什么。它应该是 bundle 还是 jar 类型?如果我在做 OSGI,我认为方法是将类型指定为 bundle。它是否正确?或者,我可以在这里有一个 jar 依赖项吗?

最佳答案

当你在 Maven 中声明一个依赖时,你只能依赖一个普通的 Jar,而不是一个 bundle,因为 Maven 不承认 OSGi 环境的限制。

看到这个问题:

Why can't maven find an osgi bundle dependency?

在你编译你的项目时,你不需要担心(但应该!)关于 OSGi 环境......例如,如果你尝试使用不是由你依赖的包导出的包,它不会提示之上....

当您尝试在 OSGi 容器中部署您的包时,如果您正确声明了对您使用的“dal”包的依赖项,当然包括版本(通常您应该让 maven-bundle-plugin 为您做基于在您的 POM 上),只有在容器中有一个包以正确的版本(或版本范围)导出所需的包时,它才会被解决。

考虑到“dal”似乎已经是一个 bundle ,您只需确保将 bundle 和“dal”部署在一起,一切都会正常工作。

但是,如果您错误地添加了对“dal”的私有(private)包的依赖项,尽管 Maven 会很乐意为您编译它,但当您将它扔到 OSGi 中时,您会遇到一个讨厌的接线异常:)

请注意,bundle 只是一个普通的 jar,其中包含 list 中的 OSGi 元数据(Bundle-SymbolicName、Bundle-Version 等)。因此,如果您不使用 OSGi,则 bundle 将像任何其他 jar 一样工作。

但是无论如何,如果您想了解更多信息,请检查以下问题:

What is the meaning of type "bundle" in a maven dependency?

关于maven - OSGI Bundle vs jar 依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14913615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com