2012-02-16 31 views
10

一個完整的OSGi應用程序我有一組OSGi的束被使用Maven構建,我想知道是否有一個Maven插件可用,可以讓我做到以下幾點:創建與Felix和Maven的

  1. 指定要包含在一個發行版中的bundle集和/或指定一個bundle並解決依賴關係。
  2. 構建框架的完整分佈。我的意思是一個包含所有需要的軟件包的zip文件,以及用於felix的正確目錄結構,以便用戶可以簡單地解壓縮該文件並鍵入「java -jar bin/felix.jar」。

我做了一些Google搜索,除了appassembler之外,沒有發現任何非常有希望的東西。你們有沒有想出一個好的解決方案?

更新 下面是我試圖完成的一個說明。

example-parent\ 
       bundle-one 
       bundle-two 
       bundle-three 
       assembly-one 
       assembly-two 

assembly-one將包括bundle-onebundle-twoassembly-two將包括bundle-twobundle-three或其任何組合。然後,當您構建項目時,您將獲得兩個zip文件,一個用於assembly-one,另一個用於assembly-two,其中包含自包含的felix安裝中的相應包。例如:

assembly-one.zip\ 
       bin\felix.jar 
       bundle\bundle-one, bundle-two, plus bare min felix bundles 
       conf\any configuration files I need 

希望能提供更多關於我正在努力完成的信息。我想這與Eclipse做一個feature.xml類似,但當然不使用Eclipse。

回答

3

Fred建議使用程序集插件打包一個可以壓縮的自包含分佈,這是一個很好的方法。如果你正在尋找這樣的構建文件如何工作的例子,那麼Apache Aries博客示例源代碼使用maven bundle和assembly插件。

另一種方法是創建應用程序工件。這個(還沒有)沒有單一的OSGi標準,但是有幾個項目提供了一種將束分組在一起成爲超束的方法。這不像你用程序集描述的那樣,因爲OSGi框架不包括在內,但它與Eclipse feature.xmls類似。查看Apache Aries eba(企業捆綁軟件歸檔)應用程序,處女座計劃文件或Karaf功能。在大多數這些捆綁中,您會得到一個包含一些捆綁包的歸檔文件和/或描述應用程序內容的元數據文件。不包含在歸檔中的包可以從存儲庫供應。對於Aries,還有一個eba maven包裝,它將生成包含APPLICATION.MF文件和捆綁包的.eba存檔。

在Enterprise OSGi in Action(http://www.manning.com/enterpriseosgiinaction)的第4章中,我們已經詳細瞭解了這一點,或者eba的快速谷歌,處女座計劃或karaf功能應該會爲您找到更多。你的用例的缺點是應用程序需要預先安裝到適當的技術中才能部署到運行時中,因爲沒有核心的OSGi。

Felix文件安裝的另一個項目是讓Felix文件安裝更容易。這使您可以將捆綁包放入受監視的目錄中,從而無需編寫配置文件。

6

吊衣的Launchpad插件[1]創建一個可運行jar文件或嵌入OSGi框架和捆綁的定製列表war文件,這可能是你所需要的。有了這你甚至不需要解壓縮生成的jar文件,只需啓動就足夠了。

[1] http://sling.apache.org/site/maven-launchpad-plugin.html

0

如果您正在使用OSGi的V4 +及使用Maven構建,使用pax-ops4j。使用非常方便,使OSGi的發展變得輕而易舉。

+4

你能解釋一下如何打包整個OSGi應用程序,而不是說「use pax-ops4j」嗎? – oconnor0 2012-02-20 22:58:20