我正在使用带有 Fabric 的 JBoss Fuse 6.2。我有一个编译成 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