我正在使用maven(maven-bundle-plugin)和apache karaf在osgi bundle開發中邁出第一步。 我的問題是:我如何導入另一個包的包?使用maven bundle插件進行osgi開發並設置依賴關係
如果我有兩個捆綁包A和B. 可以說捆綁包A導出一個包「package.from.bundle.A」。 這我可以捆綁項目的pom.xml聲明:
...
<instructions>
...
<Export-Package>
package.from.bundle.A*;version=${project.version}
</Export-Package>
<Import-Package>
*
</Import-Package>
</instructions>
...
但我怎麼能聲明,我想使用包捆B? 如果我只是寫項目B的POM文件的進口包裝標籤之間的軟件包名,這也不行......
...
<instructions>
...
<Export-Package>
</Export-Package>
<Import-Package>
package.from.bundle.A
</Import-Package>
</instructions>
...
如何行家從哪個包項目這個包是關係到知道嗎?我如何使用maven在我的bundle之間使用依賴關係?
謝謝
是的,但問題是,當我想要構建我的包(使用mvn安裝)時,我最終得到一個構建失敗說:未分解的引用[org.osgi.framework]由Bundle-類路徑。在配置包中找到錯誤。當我參考上面的標籤中顯示的package「package.from.bundle.A」時,會發生這種情況,這對我來說似乎合乎邏輯,因爲maven怎麼知道在哪裏找到這個包?我想我做的是完全錯誤的...... –
Moonlit
2012-07-14 08:09:26
你沒有提到你的原始問題中的構建失敗。 :) 你肯定不需要元素,因爲它默認爲*,它會導入你的包使用的所有包。清單在編譯後生成,所以如果你有編譯錯誤,那麼這與你的配置中的內容有關。 聽起來好像你需要依賴org.osgi.core來解決編譯問題。 –
2012-07-14 12:13:39
thanx的回覆,我看了看,org.osgi.core依賴關係存在...但我想我找到了錯誤。是否真的有必要爲另一個bundle設置maven dependency ...因此,如果bundle A依賴於bundle B,我還必須向bundle A的maven項目聲明一個Maven依賴項(在B的pom.xml中)?如果我這樣做,我不會在我做maven安裝時遇到錯誤。 – Moonlit 2012-07-14 12:51:03