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

标签 java fuseesb jbossfuse fabric8

我正在将 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: 协议(protocol)来实现非 OSGI 依赖项吗?

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

最佳答案

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

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

关于java - 在 JBoss Fuse 中处理非 OSGI 依赖项的传递依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33363893/

相关文章:

java - 将日期范围与另一个列表中的其他连续日期进行比较,以获得相对于比较列表的相邻范围

java - Camel 是否对文件使用隐式读锁?

java - 我们如何将 Jboss Fuse 即 Servicemix ASCII 更改为自定义显示

java - OpenEntityManagerInViewFilter - 未定义的EntityManagerFactory

用于绘图的 Java API

java - 熔断ESB osgi :install running into issues

java - 在 JBoss EAP 6.4 上的 JBoss Fuse 6.3 中使用 Camel 访问环境属性时出错

java - Fabric8:部署如何在目标中设置用户和密码属性?

java - 如何在首次应用启动时触发教程(Android)