Ian*_*son 1 java osgi maven apache-karaf
在我下面的示例中,OSGi 解析和 Maven 依赖项支持所需的步骤似乎存在差异/重复。
我有一个依赖于外部 3rd 方 jar 的 jar,在这种情况下是 time4j。
<dependency>
<groupId>net.time4j</groupId>
<artifactId>time4j-core</artifactId>
<version>4.16</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
然后我可以通过导入包和运行等在本地运行我的简单 jar。
导入 OSGi 时,我必须确保首先导入这个 jar,通常使用 PAX Wrap Url。
这对于 1 个 jar 依赖项没问题,但是当存在多个依赖项时呢。我可以使用 features.xml 文件来收集这些罐子,但为什么呢?我已经在我的 pom.xml 中指定了它们。
似乎 OSGi / Karaf 应该有一种方法可以读取 pom.xml 依赖项,并在需要时使用 PAX Wrap url 将它们导入到容器中。
我在这里错过了什么吗?
抱歉,您的期望与现实不符。首先,Maven 依赖项是构建时依赖项。这就是为什么您按照提供的方式声明您知道在运行时可用的依赖项
<scope>provided</scope>
Run Code Online (Sandbox Code Playgroud)
OSGi 和 Karaf 都不能对你的构建时依赖做任何事情。 但是使用 OSGi,您可以确保您的构建依赖项在您的运行时也可用,并且不会干扰其他可能可用的库。
这就是为什么您需要申报进口和出口等。
Karaf 确实可以帮助您处理一些依赖项,例如功能文件。如果您有一个功能定义 maven 项目,则您所有的编译范围依赖项都可以包含在一个功能文件中。
但是,OSGi 解析器只查看当前可用的包,仅此而已,与 maven 没有任何联系,如果您想对外部依赖项进行某种自动解析,您需要确保您有
a) 一个 OBR 解析器启用(这取决于您使用的 karaf 版本,4.x 已经包含在内)和
b) 手头的 OBR 存储库,在这种情况下 Karaf Cave 将是要查找的项目,因为它可以像代理一样驻留在Maven 存储库的顶部。
| 归档时间: |
|
| 查看次数: |
561 次 |
| 最近记录: |