我正在将 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/