2011-09-06 25 views
6

私はMavenのバンドル・プラグインとのトラブルを抱えている:Mavenのバンドルパッケージングの問題、

私はそれゆえ、私はバンドルとしてパッケージを使用し、OSGiバンドルとしての私のプロジェクトを展開します。 しかし、pomはパッケージングをバンドルとして知らないようです。ここでは、私のpom.xmlを見ることができます:

<project ...>... 
    <packaging>bundle</packaging> 
<version>1.0.0</version> 

<name>Simple CXF project using spring configuration</name> 

<properties> 
    <cxf-version>2.4.2</cxf-version> 
</properties> 

<build> 
    <pluginManagement> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
        <source>1.5</source> 
        <target>1.5</target> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.felix</groupId> 
       <artifactId>maven-bundle-plugin</artifactId> 
       <extensions>true</extensions> 
       <version>2.3.5</version> 
       <configuration> 
        <instructions> 
         <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName> 
         <Bundle-Name>${project.name}</Bundle-Name> 
         <Bundle-Version>${project.version}</Bundle-Version> 
         <Export-Package>demo.hw.server</Export-Package> 
         <Bundle-Activator>demo.hw.server.Activator</Bundle-Activator> 
         <Require-Bundle>org.apache.cxf.bundle</Require-Bundle> 
        </instructions> 
       </configuration> 
      </plugin> 
     </plugins> 
    </pluginManagement> 
</build> 

<dependencies> 
    <dependency> 
     <groupId>org.apache.cxf</groupId> 
     <artifactId>cxf-rt-frontend-jaxws</artifactId> 
     <version>${cxf-version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.cxf</groupId> 
     <artifactId>cxf-rt-transports-http</artifactId> 
     <version>${cxf-version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.felix</groupId> 
     <artifactId>org.osgi.core</artifactId> 
     <version>1.4.0</version> 
    </dependency> 
</dependencies> 

</project> 

彼らは言う、このバグはすでに(http://jira.codehaus.org/browse/MNG-4338)に固定されていますが、私にはそれがhasnようです't。誰もこの問題を以前に遭遇し、解決策を見つけましたか?

エラーメッセージは次のようである:

[INFO] Scanning for projects... 
[ERROR] The build could not read 1 project -> [Help 1] 
[ERROR] 
[ERROR] The project com.talend.liugang.cxf:java_first_jaxws:1.0.0 (C:\Users\Andreas\workspace\java_first_jaxws\pom.xml) has 1 error 
[ERROR]  Unknown packaging: bundle @ line 7, column 13 
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. 
[ERROR] Re-run Maven using the -X switch to enable full debug logging. 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles: 
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/ProjectBuildingException 

敬具、上記のあなたのポンポンの例を考えると

答えて

14

SAEN 、あなただけ<pluginManagement>ノードの外のmaven-バンドル・プラグインを移動する必要があります。 <pluginManagement>は、通常、親pomsの継承目的で使用されます。バンドルパッケージタイプはmaven-bundle-pluginによって提供されています(そのため、<extensions>true</extensions>が必要です)。この場合、このプラグインは<pluginManagement>の外にある必要があります。

<project ...>... 
    <packaging>bundle</packaging> 
    <version>1.0.0</version> 

    <name>Simple CXF project using spring configuration</name> 

    <properties> 
     <cxf-version>2.4.2</cxf-version> 
    </properties> 

    <build> 
     <pluginManagement> 
      <plugins> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-compiler-plugin</artifactId> 
        <configuration> 
         <source>1.5</source> 
         <target>1.5</target> 
        </configuration> 
       </plugin> 
      </plugins> 
     </pluginManagement> 

     <plugins> 
      <plugin> 
       <groupId>org.apache.felix</groupId> 
       <artifactId>maven-bundle-plugin</artifactId> 
       <extensions>true</extensions> 
       <version>2.3.5</version> 
       <configuration> 
        <instructions> 
         <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName> 
         <Bundle-Name>${project.name}</Bundle-Name> 
         <Bundle-Version>${project.version}</Bundle-Version> 
         <Export-Package>demo.hw.server</Export-Package> 
         <Bundle-Activator>demo.hw.server.Activator</Bundle-Activator> 
         <Require-Bundle>org.apache.cxf.bundle</Require-Bundle> 
        </instructions> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

    <dependencies> 
     <dependency> 
      <groupId>org.apache.cxf</groupId> 
      <artifactId>cxf-rt-frontend-jaxws</artifactId> 
      <version>${cxf-version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.cxf</groupId> 
      <artifactId>cxf-rt-transports-http</artifactId> 
      <version>${cxf-version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.felix</groupId> 
      <artifactId>org.osgi.core</artifactId> 
      <version>1.4.0</version> 
     </dependency> 
    </dependencies> 

</project> 
+9

同様の問題がありました。私は真のビットが欠けていた。ありがとう! – Sbodd

+0

Bless you、Sbodd – user64141

0

私も同様の問題があります。アーティファクトIDの開始のようにグループIDが終了すると、それが起こることが私に起こります。私はそのような何かをバンドルしてみてください:マニフェストとしてシンボル名でorg.slf4j.api.plugin:それはのように終わるのアーティファクトIDから

<groupId>org.slf4j</groupId> 
<artifactId>slf4j-api.plugin</artifactId> 

SLF4Jが削除されます。

1

Yeap、問題が<のgroupId > org.apache.felix </groupIdを>が<pluginManagement>の外にする必要があるということです。