2015-10-27 35 views
1

我正在使用帶有Fabric的JBoss Fuse 6.2。我有一個編譯成OSGI包的應用程序。該應用程序依賴於非OSGI jar文件(multiplier.jar),並且對另一個非OSGI jar文件(adder.jar)具有傳遞依賴性。處理JBoss Fuse中非OSGI依賴關係的傳遞依賴關係

應用程序包和兩個依賴項都位於本地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> 

我然後運行保險絲控制檯這些命令:

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會自動加載這個依賴關係。有沒有什麼辦法可以實現這一點,並使熔絲自動使用wrap:協議的非OSGI依賴?

與兩個依賴完整的測試應用程序可以在這裏找到:https://www.dropbox.com/s/rm1kcctvnwlvb2d/transitive2.zip?dl=0

回答

1

不,你必須列出所有的依賴關係,歡迎OSGi的土地。

我們試圖用一種叫做FAB [1] - Fuse Application Bundles的方式將Maven的易用性添加到OSGi。但是這兩個世界太不同了。因此,在OSGi領域,不幸的是不得不在功能文件中列出所有依賴關係。

+1

和Fab包裝已被棄用按照保險絲版本6.2,是嗎? 基於JBoss EAP的版本6.2.1會有更好的支持嗎? – npeder