2012-04-30 11 views
11

Ich benutze das jaxb2 xjc Plugin zum Generieren von Java-Dateien von einem XSD. Deshalb habe ich meine pom.xml wie folgt zu konfigurieren:Maven JAXB2 XJC-Plugin: M2E-Plugin-Ausführung nicht abgedeckt

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>jaxb2-maven-plugin</artifactId> 
      <version>1.3</version> 
      <executions> 
       <execution> 
        <phase>generate-sources</phase> 
        <goals> 
         <goal>xjc</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <packageName>com.mypackage.model</packageName> 
       <schemaDirectory>${basedir}/src/main/resources/XSD</schemaDirectory> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

ich meine Entwicklungsumgebung geändert Indigo Eclipse und dies mehr funktioniert nicht. Der Fehler lautet: "Die Ausführung des Plugins wurde von der Konfiguration des Lebenszyklus nicht erfasst". Ich verstehe, dass ich die Ausführung meines Plugins anders definieren muss, damit es in meiner neuen Umgebung funktioniert.

Ich folgte den Anweisungen auf dieser Seite M2E plugin execution not covered, aber die Quelldateien werden nicht generiert, wenn die generate-sources Phase ausgeführt wird.

Könnte jemand mir zeigen, wie ich meinen Pom genau umgestalten kann, damit meine Dateien richtig erzeugt werden?

Vielen Dank für Ihre Hilfe!

+0

Haben Sie jemals eine Antwort für dieses Offline gefunden? Ich versuche das gleiche Problem selbst zu lösen. –

+0

Nichts ... Aber wenn Sie einen finden, bitte posten Sie es und ich werde froh sein, es zu akzeptieren :) –

Antwort

14

Es stellt sich heraus, dass ich tat schließlich eine Antwort finden! Die Integration von Eclipse mit Maven hat Kompatibilitätsprobleme mit zahlreichen Maven-Plugins gekannt.

Wenn Sie erfolgreich ein Maven bauen von der Kommandozeile außerhalb von Eclipse ausführen können, doch aber von Eclipse zeigt „Ausführung nicht abgedeckt“ Fehler in Ihrem POM, dann versuchen Sie das Hinzufügen dieses Plugin:

<build> 
    ... 
    <pluginManagement> 
     <plugins> 
      <!--This plugin's configuration is used to store Eclipse m2e settings 
       only. It has no influence on the Maven build itself. --> 
      <plugin> 
       <groupId>org.eclipse.m2e</groupId> 
       <artifactId>lifecycle-mapping</artifactId> 
       <version>1.0.0</version> 
       <configuration> 
        <lifecycleMappingMetadata> 
         <pluginExecutions> 
          <pluginExecution> 
           <pluginExecutionFilter> 
            <groupId>org.codehaus.mojo</groupId> 
            <artifactId>jaxb2-maven-plugin</artifactId> 
            <versionRange>[1.3,)</versionRange> 
            <goals> 
             <goal>xjc</goal> 
            </goals> 
           </pluginExecutionFilter> 
           <action> 
            <execute /> 
           </action> 
          </pluginExecution> 
         </pluginExecutions> 
        </lifecycleMappingMetadata> 
       </configuration> 
      </plugin> 
     </plugins> 
    </pluginManagement> 
</build> 

Wie angegeben Im obigen Kommentar macht dieses Plugin nichts außerhalb von Eclipse. Es teilt Eclipse einfach mit, wann das JAXB-Plugin ausgeführt werden soll, da Eclipse nicht schlau genug ist, um das herauszufinden.

Ich fand dieses Snippet auf another StackOverflow question, und nahm es auf das Plugin "jaxb2-maven-plugin" statt das fragliche Plugin in der anderen Frage.

+0

Heute Morgen habe ich das gleiche wie oben und es behoben meine Eklipse Fehler. – Venky

3

Sie können auch zu der maven-jaxb2-plugin wechseln, die Unterstützung in M2E hat. Die obige Antwort von Steve Perkins gilt allgemein für solche Plugins, die M2E nicht unterstützt.

+0

Ich benutze 'maven-jaxb2-plugin' mit der neuesten Version (0.13.1) in meinem Projekt und bekomme immer noch den gleichen Fehler in der Eclipse wie in der Frage gezeigt. Nur Steve Parkins Antwort zu verwenden, scheint es zu beheben. – MJar

0

Ich bin nicht sicher, ob dies für Ihre Umgebung gilt, aber wenn die App in Maven-Module aufgeteilt wird, dann ist die beste Lösung, die meinen Bedürfnissen entspricht, das Entfernen aller betroffenen Module aus der Eclipse-IDE. Wann immer ich neu generieren muss ich einfach von der Befehlszeile mit MVN installieren. Eclipse verwendet dann Pakete von Repo und versucht nicht, selbst zu bauen, keine runOnIncremental Fiddle-around benötigt (die ich schon seit einiger Zeit verwendet), keine roten Module/Zeilen, baut auch schneller.