您好我是ServiceMix的新手,所以我可能会问同样的问题,但可能无法解决,但我无法理解。
我怀疑在ServiceMix OSGI中使用bundle时如何管理编译时与运行时依赖性。也就是说,如果我使用maven构建一个.jar可行(通过单元测试aleast)工件,其中所有编译时依赖性说示例(camel,spring)由pom.xml依赖项处理,并根据需要加载到jar中以便成功构建。因此,当我在OSGI中部署jar时,那些libs(camel,spring)已经存在于maven生成的jar中。现在作为OSGI包我在运行时从容器支持相同的bundle(camel,spring)。
所以我很困惑我的代码选择执行所需的依赖包的副本或副本。它是OSGI容器提供的.jar 或中的那个。虽然我知道MANIFEST文件提供了选项,例如导入包,它有助于从容器中的其他OSGI包中导入依赖项
可能是我遗漏了一些在这里使用OSGI的关键点,所以如果我在任何假设上错了并提供一些指示/建议,请纠正我
由于
答案 0 :(得分:0)
看起来你正在使用maven-bundle-plugin来生成自己的包。 在这种情况下,只需确保您的camel等依赖项是提供范围而不是编译范围
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-core</artifactId>
<scope>provided</scope>
</dependency>
这将确保您的捆绑包仅包含所需的依赖项。
答案 1 :(得分:0)
这完全取决于您的清单的外观:
因此通常您选择导入所有依赖项的程序包,但也可以将它们嵌入到jar中,这完全取决于您的用例。