Sud*_*oer 8 dependencies osgi bundle jar maven
我试图理解以下之间的区别
<dependency>
<groupId>com.myspace.order</groupId>
<artifactId>dal</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
和
<dependency>
<groupId>com.myspace.order</groupId>
<artifactId>dal</artifactId>
<version>1.0.0-SNAPSHOT</version>
<type>bundle</type>
</dependency>
Run Code Online (Sandbox Code Playgroud)
dal工件本身具有指定为bundle的包装:
<packaging>bundle</packaging>
Run Code Online (Sandbox Code Playgroud)
现在,当我部署dal工件时,我发现它在repo中作为jar发布(其中包含一个清单).在这种情况下,我对dal的依赖应该是什么.它应该是捆绑式还是罐型?如果我正在做OSGI,我认为方法是将类型指定为bundle.它是否正确?或者,我可以在这里拥有jar依赖吗?
Ren*_*ato 12
当你声明在Maven的依赖,你只能靠正常的罐,没有捆绑,因为Maven的不承认OSGi环境的限制.
看到这个问题:
在编译项目时,您不必担心(但应该!)关于OSGi环境......例如,如果您尝试使用未依赖的软件包导出的软件包,它将不会抱怨在....
当您尝试在OSGi容器中部署捆绑包时,如果您正确地声明了您使用的"dal"包的依赖关系,当然包括版本(通常您应该留给maven-bundle-plugin为您做的事情)在您的POM上),只有在容器中有一个捆绑包,它才能在正确的版本(或版本范围)中导出所需的包.
考虑到'dal'似乎已经是一个捆绑包,你只需要确保将你的捆绑包和'dal'一起部署,一切都会正常工作.
但是,如果你错误地添加了对'dal'私有包的依赖,虽然Maven很乐意为你编译它,当你在OSGi中抛出它时,你会受到一个讨厌的布线异常的欢迎:)
请注意,bundle只是一个普通的jar,它包含清单中的OSGi元数据(Bundle-SymbolicName,Bundle-Version等).因此,如果您不使用OSGi,捆绑包将像任何其他jar一样工作.
但无论如何,如果您想了解更多信息,请查看以下问题: