2011-09-06 7 views
6

मैं Maven गठरी-प्लगइन के साथ समस्या हो रही है के रूप में जाना जाता है:Maven बंडल पैकेजिंग समस्या, MNG-4338

मैं एक OSGi बंडल के रूप में अपने प्रोजेक्ट को तैनात करने, इस कारण मैं बंडल के रूप में पैकेजिंग का उपयोग करना चाहते हैं। लेकिन ऐसा लगता है कि पोम एक बंडल के रूप में एक पैकेजिंग नहीं जानता है। यहाँ आप मेरी 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 लगता है 'टी। क्या किसी को हल करने से पहले इस समस्या का सामना करना पड़ा है?

त्रुटि संदेश इस तरह है:

[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 

सादर, saen

उत्तर

14

ऊपर अपने पोम उदाहरण को देखते हुए, तुम सिर्फ <pluginManagement> नोड के बाहर Maven गठरी-प्लगइन बढ़ना चाहिए। <pluginManagement> आमतौर पर पैरेंट पोम्स में विरासत उद्देश्यों के लिए उपयोग किया जाता है। बंडल पैकेजिंग प्रकार मेवेन-बंडल-प्लगइन द्वारा प्रदान किया जाता है (यही कारण है कि आपको <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

आपको आशीर्वाद, एसबीओडीडी – user64141

0

मुझे एक समान समस्या दिखाई देती है। यह मेरे लिए होता है कि ऐसा तब होता है जब समूह आईडी आर्टिफैक्ट आईडी की तरह समाप्त होती है। मैं ऐसा ही कुछ बंडल करने का प्रयास करें: प्रकट रूप में प्रतीकात्मक नाम पर org.slf4j.api.plugin: ऐसा लगता है कि समाप्त होता है पर

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

विरूपण साक्ष्य आईडी से slf4j हटाया जाता है।

1

यीप, मुद्दा यह है कि < ग्रुप > org.apache.felix </ग्रुप > जरूरतों <pluginManagement> के बाहर हो रहा है।

संबंधित मुद्दे