[英]How to create OSGi bundle from jar library?
如何從jar庫創建OSGi包?
如果您正在使用eclipse:有一個向導。
它允許您選擇多個jar庫並創建包含這些jar的插件項目(即OSGi包)。
你可以在這里找到它:
File -> New -> Other ... -> Plug-in from Existing jar Archives.
首先查看是否可以從存儲庫中找到啟用osgi的庫版本
如果找不到OSGi啟用的版本。 您可以繼續使用pax工具 - PaxConstruct或使用aQute的Bnd工具 。
Eclipse Bundle Recipe項目提供了一種基於Maven的方法,用於將OSGi元數據添加到從Maven存儲庫中使用的JAR。
它的核心是它使用了bnd工具 。 這個工具就像一把瑞士軍刀。 它分析jar和類文件並正確計算包導入和導出。 你應該使用bnd自己轉換專有的罐子。 它可以在Maven Central中找到 。
遲到派對:
如果您正在使用Gradle ,則可以在應用osgi-run插件時將jar添加為項目的正常依賴項。
osgi-run插件將透明地將jar包裝成一個包,導出其中的每個包並計算其所有導入。 由於Gradle將知道jar的傳遞依賴性,如果有必要,它也會對它們做同樣的事情。
jar將成為OSGi運行時osgi-run創建的一部分,然后您可以使用gradle runOsgi
或gradle createOsgi
,然后執行run.sh
或run.bat
腳本。
當然,實際包裝是由OSGi世界的瑞士刀Bnd完成的。
如果要配置包裝的發生方式(通常應該導入/導出的內容),可以在Gradle構建文件中輕松完成,有關詳細信息,請參閱文檔 。
例:
wrapInstructions {
// use regex to match file name of dependency
manifest( "c3p0.*" ) {
// import everything except the log4j package - should not be needed
instruction 'Import-Package', '!org.apache.log4j', '*'
instruction 'Bundle-Description', 'c3p0 is an easy-to-use library for making traditional ' +
'JDBC drivers "enterprise-ready" by augmenting them with functionality defined by ' +
'the jdbc3 spec and the optional extensions to jdbc2.'
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.