2012-02-05 36 views
0

我想在我的OSGi項目休眠4使用第三方庫的時候,所以我需要讓休眠4及其依賴的OSGi的插件,使他們在OSGi運行時可處理傳遞依賴。我正在使用maven bundlor來做到這一點。因爲hibernate依賴於其他一些庫,其中一些庫也具有傳遞依賴性。有沒有辦法讓maven自動找到所有hibernate 4的依賴關係,並使所有可用的osgi運行時?如何osgiying與Maven Bundlor

謝謝。

回答

0

爲什麼不使用Maven的中央提供的包? This link提供了所有hibernate包的列表。你會發現,hibernate的核心版本4.0.1.Final可與以下Maven依賴XML:

<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-core</artifactId> 
    <version>4.0.1.Final</version> 
</dependency> 
+0

嗨Jon7,感謝您的回覆,但maven中央倉庫中的hibernate jar是普通的舊罐子,而不是osgi捆綁軟件。而且還有在春天回購沒有可用的休眠4X束以及(僅3.X)。雖然我當時可以用Hibernate 3活着,但創造了一個第三方庫的自定義OSGi包最終會成爲一些問題點。 – user1090682 2012-02-07 01:15:15

+0

您可以使用bnd的wrap命令來封裝jar,而您仍然可以獲得Maven依賴關係解析的好處。除非hibernate有任何不是osgi友好的代碼,否則我會認爲簡單的包裝就足夠了? – Jon7 2012-02-07 18:23:52

1

檢查the pax library在命令行包住罐子。或者,如果您保存您的工件在一臺Nexus庫,看看this bundle-maker plugin:如果當一個依賴具有<classifier>osgi</classifier>不存在,他們就產生對飛行包。我用的是第二種方法,雖然在配置時,越野車,它的工作

作爲第三種選擇,創建將用maven-捆插件來包裝罐勁歌。我用這個方法,當我需要定製BND指令排斥進口或改變出口
我從pax-maven-plugin產生的父包裝POM和每個包裝罐子從這個POM

繼承它們都使用BND內部BTW