2014-01-13 56 views
1

我是OSGI和Maven的新手,想要弄清楚如何在Eclipse中創建maven-osgi項目。我已經按照教程,能夠做一個maven項目,也是一個OSGI項目,但我不能做一個包含它們的項目。Eclipse - 如何製作Maven + OSGI項目?

據我所知,OSGI項目最重要的部分是manifest.mf。在我的OSGI項目中,我有:

Manifest-Version: 1.0 
Bundle-ManifestVersion: 2 
Bundle-Name: Osgi 
Bundle-SymbolicName: osgi 
Bundle-Version: 1.0.0.qualifier 
Bundle-Activator: osgi.Activator 
Bundle-RequiredExecutionEnvironment: JavaSE-1.6 
Import-Package: org.osgi.framework;version="1.3.0" 

maven項目的最重要的部分是它的pom.xml。在我的Maven項目,我有這樣的:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.videobet.test</groupId> 
    <artifactId>quick</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <name>quick</name> 
    <url>http://maven.apache.org</url> 

    <properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 

    <dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    </dependencies> 
</project> 

我們這兩個我想先做一個Maven項目,然後編輯pom.xml的所以它會增加一個OSGI項目的依賴,使清單相結合。 MF。爲此,我嘗試添加如下內容:

<plugin> 
    <artifactId>maven-jar-plugin</artifactId> 
    <configuration> 
    <archive> 
     <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile> 
    </archive> 
    </configuration> 
</plugin> 
<plugin> 
    <groupId>org.apache.felix</groupId> 
    <artifactId>maven-bundle-plugin</artifactId> 
    <executions> 
    <execution> 
     <id>bundle-manifest</id> 
     <phase>process-classes</phase> 
     <goals>  
     <goal>manifest</goal> 
     </goals> 
    </execution> 
    </executions> 
</plugin> 

但是我沒有成功。首先我得到了這樣的錯誤:

Plugin execution not covered by lifecycle configuration: org.apache.felix:maven-bundle-plugin:2.4.0:manifest (execution: bundle-manifest, phase: process-classes) 

即使我能解決這個即時通訊不知道如果這將工作。我還發現了像tycho這樣的不同插件可以幫助完成任務,但我真的不想使用它們。我想保持儘可能標準的事情,並自己做事情,所以我最終會明白什麼即時通訊:)

任何幫助,將不勝感激!

+1

您需要將包裝類型設置爲「捆綁」。 Maven-bundle-plugin生成MANIFEST.MF並將其放入Jar中,無需再使用單獨的插件來構建Jar。 –

+0

對不起,不太明白,你能稍微貶低一點嗎? :) – user1985273

+1

取出整個''部分,它很容易maven-jar-plugin。更改'瓶子'到'' –

回答

1

還有一種方法可以用Maven創建Bundle,看看Maven Tycho。 如果你想工作,並與Eclipse環境中部署,那麼你也可以使用此教程: http://www.vogella.com/tutorials/EclipseTycho/article.html

這是清單第一種方法。 使用Maven Tycho,您可以爲其他Eclipse RCP環境中的不同應用程序導入自己的P2存儲庫(也是ZIP文件)。

0

還有是幫助入門,使與Eclipse + Maven的+ OSGi的應用程序能在https://www.youtube.com/watch?v=JNH6JVmAcIQ&t=432s

該視頻的視頻開始於一個新的Eclipse和一個空的Maven項目,所以如果你做同樣的步驟,它應該爲你工作。

此外,還有烹飪書籍http://cookbook.everit.org/ 本食譜的目標是幫助人們開始使用基於Maven的OSGi(以及可選的Eclipse)。

食譜尚未更新一段時間,因爲它正在等待eclipse plugin。由於Eclipse插件現在可以工作,烹飪書很快就會被重寫。