2013-11-05 52 views
2

我正在修改現有的庫集合,將它們構建爲OSGi包。這是一個多模塊Maven項目,具有多層POM繼承和聚合。理想情況下,插件配置只能放在父POM中。該項目由100多個罐子組成。已經有一個包含整個庫的大型軟件包並導出所有軟件包。我的努力旨在使圖書館更加模塊化,這是首先將它們作爲OSGi捆綁銷售的主要原因。處理拆分包:Require-Bundle with maven-bundle-plugin

主要問題是這個庫有一個拆分包的噩夢,我不能改變包的結構。我試圖使用Require-Bundle來解決問題,正如書中的建議中的OSGi一樣,儘管書中提到這不是一個好習慣。我嘗試了在Import-Package中使用名爲「split」的任意屬性的建議來分離一個包的各個部分,並僅導入某些包。但是由於提供相同包的捆綁包的數量,結果太複雜了。

問題是如何配置maven-bundle-plugin<Require-Bundle>指令,如果可能的話,使用通配符(如*)作爲告訴它使用所有的Maven依賴,而不必手動列出所有包名的形式和版本;即是否有替代:

<Require-Bundle>lib-api; version=${project.version}</Require-Bundle> 

使用某種通配符匹配,可以放在父POM中?

+0

這樣做的問題 - 如果確實有可能 - 是假設您的運行時依賴關係與構建時依賴關係相同。通常情況並非如此。 –

+0

是的。事實上,我假設所有要插入'中的bundle都是在構建時可用的Maven依賴關係 – Boj

+0

爲什麼不將這些庫合併到一個包中呢? –

回答

1

總之,沒有。 bnd不支持Require-Bundle,它將它視爲正常的頭文件。