2013-03-31 101 views
9

我想構建一個兼容OSGi的多模塊應用程序,其中編譯後在3個文件夾中具有所有必需的捆綁軟件。我正在使用maven-bundle-pluginmaven-scr-plugin來創建捆綁包。使用Maven構建OSGi應用程序

我想要的是使用單個命令在希望的腳本中使用腳本在osgi容器(Equinox)中運行此應用程序。爲此,我相信我必須創建一個config.ini文件列出應用程序中的所有軟件包。

有沒有一種方法可以在Maven編譯時生成它?還是有更好的方式來獲取某些文件夾結構中的所有包,以便應用程序可以立即運行?

+0

如果這隻用於開發,可以使用Pax構造函數(https://ops4j1.jira.com/wiki/display/paxconstruct/Pax+Construct),它是PaxRunner和其他一些Maven的好東西。 –

回答

4

我寫了一個maven插件,默認情況下在目標下創建dist文件夾,該文件夾包含所有maven依賴關係的隨時可用equinox。 Equinox使用YAJSW包裝,因此您可以將生成的equinox程序包用作測試服務器。請參閱插件使用頁面:http://www.everit.org/eosgi-maven-plugin/

該文檔有點差,但如果您有任何問題,請不要猶豫,問。

短一步一步的指導:

  • 退房https://github.com/everit-org/osgi-samples-simple(用戶:客人,通過:客人)
  • 運行 「MVN安裝」。這將在模塊測試/核心中的target/eosgi-itests-dist/equinox中生成一個測試equinox環境。
  • 如果你想擁有一個簡單的不帶測試模塊的Equinox服務器,你可以在tests/core模塊上運行命令「mvn eosgi:dist」。

編輯

一個新的菜譜將包含更詳細的一步一步的指導很快面市。網址是http://cookbook.everit.org

10

您可以在OSGi Maven項目中使用帶有PaxRunner的maven-pax插件。詳情請查看tutorial

<plugin> 
<!-- Pax Runner Maven plugin --> 
<groupId>org.ops4j</groupId> 
<artifactId>maven-pax-plugin</artifactId> 
<version>1.4</version> 
<configuration> 
     <!-- Pax Runner version --> 
     <runner>1.4.0</runner> 
     <!-- OSGi framework type (equinox, felix, knopflerfish) --> 
     <framework>equinox</framework> 
     <provision> 
      <param>--log=debug</param> 
      <param>--workingDirectory=target/runner</param> 
      <!-- bundles that should be installed --> 
      <param>mvn:org.osgi/org.osgi.compendium/[email protected]</param> 
      <param>mvn:org.apache.felix/org.apache.felix.eventadmin/[email protected]</param> 
      <param>mvn:org.apache.felix/org.apache.felix.log/[email protected]</param> 
     </provision> 
</configuration> 
</plugin> 
+0

是否可以有多個配置,即一個用於felix,另一個用於春分?我嘗試通過maven屬性設置框架,但felix和equinox具有不同的依賴關係(例如對於聲明式服務)。 – mike

+0

你可以使用maven配置文件 –