繁体   English   中英

在 JBoss Fuse 中处理非 OSGI 依赖项的传递依赖项

[英]Handling transitive dependencies of non-OSGI dependencies in JBoss Fuse

我正在将 JBoss Fuse 6.2 与 Fabric 一起使用。 我有一个编译成 OSGI 包的应用程序。 应用程序依赖于一个非 OSGI jar 文件 (multiplier.jar),并且它依赖于另一个非 OSGI jar 文件 (adder.jar)。

应用程序包和两个依赖项都位于本地 Maven 存储库中。

我定义了一个 features.xml 文件,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<features name="CamelLogRepo" xmlns="http://karaf.apache.org/xmlns/features/v1.2.0">
  <feature name="multiplier-logger">
    <bundle>mvn:org.jboss.quickstarts.fuse/beginner-camel-log/6.2.0.redhat-133</bundle>
    <bundle>wrap:mvn:com.acme.math.multiply/multiplier/1.0</bundle>
    <bundle>wrap:mvn:com.acme.math.add/adder/1.0</bundle>
  </feature>
</features>

然后我在 Fuse 控制台中运行这些命令:

fabric:profile-create --parent feature-camel logger-profile
fabric:profile-edit --repository file:C:/Tools/jboss-fuse-6.2.0.redhat-133/quickstarts/beginner/camel-log/features.xml logger-profile
fabric:profile-edit --feature multiplier-logger logger-profile
fabric:container-create-child --profile logger-profile root logger

这有效。

但是,我必须在 features.xml 文件中列出所有传递依赖项。 有什么办法可以避免这种情况吗?

我的印象是 Fuse 可以进行 Maven 依赖查找,所以如果一个依赖在存储库中有一个 pom.xml 列出另一个依赖 Fuse 会自动加载该依赖。 有什么方法可以实现这一点并使 Fuse 自动使用wrap:协议来处理非 OSGI 依赖项?

可以在此处找到具有两个依赖项的完整测试应用程序: https : //www.dropbox.com/s/rm1kcctvnwlvb2d/transitive2.zip?dl=0

不,您必须列出所有依赖项,欢迎来到 OSGi 领域。

我们尝试通过称为FAB [1] - Fuse Application Bundles 的东西将 Maven 的易用性添加到 OSGi。 但这两个世界实在是太不同了。 因此,不幸的是,在 OSGi 领域中,您最好列出功能文件中的所有依赖项。

如果我错了,请纠正我,但我认为您也可以通过 Fuse/Fuse-Fabric 提供的 Hawtio GUI 添加依赖项,与使用 karaf 控制台处理配置文件及其功能/功能存储库相比,这将节省时间,因为您可以在从可用功能列表中进行选择时避免拼写错误。

保险丝管理控制台 (Hawtio) 上的程序如下:

让 Fabric 启动并运行,如果尚未完成,请转到host:8181/hawtio并按如下方式创建配置文件:

Fabric 透视图 --> Wiki --> 创建 --> Fabric8 配置文件

在配置文件详细信息屏幕上,您可以轻松添加所需的父项或依赖项功能,以及功能存储库和工件部署,可以在其上添加 Maven 编译工件和包装工件。 如果发生错误,那么它们很可能会在该服务器/容器的控制台日志中指出缺少功能依赖项。

希望这有助于某人

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM