我想了解以下OSGI包VS JAR依赖
<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>
现在,当我部署达尔神器时,我将它看作是一个jar(其中包含一个清单)在repo中发布。在这种情况下,我应该对dal有什么依赖。它应该是类型捆绑还是jar?如果我在做OSGI,我想方法是将指定的类型指定为bundle。它是否正确?或者,我可以在这里只有一个jar依赖项吗?
“为例,它不会,如果您尝试使用不是由你根据包导出包抱怨....“ 这是否意味着在运行时强制(并检测)OSGI依赖关系?我正在考虑在编译时验证导出包。 – Sudoer 2013-02-19 17:18:08
当您在OSGi容器中安装软件包时,依赖关系将被解析。由于OSGi是一个动态环境,您可以随时安装捆绑软件包。如果捆绑软件达到RESOLVED状态,则可能会启动它。换句话说,安装是一种动态编译......如果该软件包通过了,那么可以保证在安装时所有导入都已满足,因此软件包可以开始使用。 – Renato 2013-02-19 22:14:58
在实际尝试安装它之前,OSGi无法解析您的软件包依赖关系,因为这将取决于安装时可用的软件包集合。另一方面,Maven使用普通的Java编译过程,忽略OSGi可见性规则......这是主要的区别。 – Renato 2013-02-19 22:17:40