我有一個需要轉換爲OSGi包的JAR文件。 我沒有JAR文件的原始源代碼。將現有的JAR轉換爲OSGi包
我試圖從使用的答案:How to create OSGi bundle from jar library?
然而,他們是非常不合時宜的。
編輯:我需要轉換幾個,但固定數量的罐子。
我有一個需要轉換爲OSGi包的JAR文件。 我沒有JAR文件的原始源代碼。將現有的JAR轉換爲OSGi包
我試圖從使用的答案:How to create OSGi bundle from jar library?
然而,他們是非常不合時宜的。
編輯:我需要轉換幾個,但固定數量的罐子。
選項1 - 使用BND平臺期待罐的頻繁添加/更新時,或建立自己的OSGi包時,你可以從Maven倉庫
我們使用bnd-platform檢索您的依賴關係(我也是作者)管理第三方依賴關係並從中創建OSGi包。您可以將它與從Maven存儲庫和本地Jars檢索到的依賴關係一起使用(請參閱README)。如果您經常添加或更新您的依賴項,我建議您嘗試bnd-platform。它是搖籃一個插件,可以方便的與this template開始 - 只需添加您的Jar文件,並在項目README(捆綁符號名稱,版本)和運行gradlew bundles
描述提供配置。
選項2 - 使用BND當你做一次或添加/更新很少
如果你只做這個過程中一次或很少,一個簡單的方法來創建一個OSGi構建OSGi包從現有的Jar捆綁到直接使用bnd on the command line。你唯一需要的是Java和bnd jar。您可以使用wrap
嘗試自動打包jar或使用instructions for bnd創建.bnd
文件(例如僅導出特定的包)。
例.BND文件:
-classpath: lib/trove-2.0.4.jar
-output: gnu.trove-2.0.4.jar
Export-Package: *;-split-package:=merge-last;-noimport:=true
Import-Package: *
Bundle-Version: 2.0.4
Bundle-Name: GNU Trove Collections Plug-in
Bundle-SymbolicName: gnu.trove
調用示例:
java -jar <path to bnd>.jar trove-2.0.4.bnd
的BND罐下載不再通過網站直接提供的,一個好的辦法是download it from Maven Central。
我使用了選項2.它運行良好。謝謝。 – CodeTower
Eclipse Bundle Recipe項目提供了一種基於Maven的方法,用於將OSGi元數據添加到從Maven存儲庫中消耗的JAR中。儘管它的名字不使用Eclipse。
在其核心,它使用bnd tool。這個工具就像一把瑞士軍刀。它分析jar和類文件並正確計算軟件包的導入和導出。你應該使用bnd來自己轉換專有的jar。這是available in Maven Central。
如果你使用Maven的,那麼你可以使用Maven插件捆綁在一個OSGi包內聯或嵌入的依賴關係:
或只使用OSGi的:用換行選項,如下安裝。
osgi:install wrap:file:/u01/repository/com/oracle/ojdbc6/11.2.0/ojdbc6-11.2.0.jar
這將部署jar文件包,你可以得到在「$ fuse_home /數據/緩存/包(編號)/version0.0」文件夾中的包。
正如旁註:要做到這一點,你需要安裝pax url wrap。 –
是否有一種方法不涉及Eclipse? – CodeTower
http://wiki.osgi.org/wiki/Migration –
這[blog](http://skysailserver.blogspot.de/2013/10/converting-ordinary-jar-into-osgi.html)是關於創建捆綁_without_涉及Eclipse。 – evandor