OSGI包VS JAR依赖(OSGI Bundle vs jar dependency)

2019-08-17 00:48发布

我想了解以下的区别

    <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工件本身有指定为捆包装:

<packaging>bundle</packaging>

现在,当我部署的dal神器,我把它刊登在回购作为一个jar(与清单内的话)。 在这种情况下,我应该对我的依赖DAL是。 它应该是类型捆绑或罐子的? 如果我做的OSGI,我想的办法是有指定为包类型。 它是否正确? 或者,我能有一个罐子的依赖吗?

Answer 1:

当你声明在Maven的依赖,你只能靠正常的罐,没有捆绑,因为Maven的不承认OSGi环境的限制。

看到这个问题:

为什么不能Maven的找到一个OSGi包依赖?

在您编译项目的时候,你不必担心(但应!)关于OSGi环境尚未...例如,如果您尝试使用不是由你视束导出的包也不会抱怨在....

当您尝试将OSGi容器中部署你的包,如果你正确地宣布你所使用的“DAL”包你的依赖,当然也包括版本(通常你应该离开了Maven的捆绑,基于插件的为你做在你的POM),它只会如果有其中出口所需的软件包在正确的版本(或版本范围)的容器内的捆绑解决。

考虑到“DAL”似乎是一个已经捆绑,你只需要确保你的包和“DAL”部署在一起,一切都将正常工作。

但是,如果错误地添加上“DAL”的私有软件包的依赖关系,但Maven将愉快地编译它为你,当你在OSGi中抛出它,你会被讨厌的布线异常迎接:)

注意,一个包只是其中包含在所述清单(捆绑-SymbolicName,捆绑-版等)的OSGi元数据的正常罐子。 所以,如果你不使用OSGi的,一个包将作为任何其他jar。

但无论如何,如果你想要一些更多的信息,看看这个问题:

是什么类型的“捆绑”在一个Maven依赖的意义?



文章来源: OSGI Bundle vs jar dependency