2012-04-30 11 views
11

Sto usando il plug-in jaxb2 xjc per generare file java da un XSD. Quindi ho usato per configurare il mio pom.xml come segue:Plugin Maven JAXB2 XJC: esecuzione del plug-in M2E non coperta

<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> 

ho cambiato il mio ambiente di sviluppo Eclipse Indigo e questo non funziona più. L'errore dice: "L'esecuzione del plugin non è coperta dalla configurazione del ciclo di vita". Capisco che devo definire l'esecuzione del mio plugin in modo diverso in modo che funzioni nel mio nuovo ambiente.

Ho seguito le istruzioni in questa pagina M2E plugin execution not covered ma i file di origine non vengono generati quando si esegue la fase generate-sources.

Qualcuno potrebbe mostrarmi come effettuare il refacting preciso del mio pom in modo che i miei file vengano generati correttamente?

Grazie per l'aiuto!

+0

Hai mai trovato una risposta per questo offline? Sto provando a risolvere lo stesso problema io stesso. –

+0

Nessuno ... Ma se ne trovi uno, per favore postalo e sarò lieto di accettarlo :) –

risposta

14

Si scopre che I ha fatto alla fine trovare una risposta! L'integrazione di Eclipse con Maven ha conosciuto problemi di compatibilità con numerosi plugin Maven.

Quando si può eseguire con successo un Maven costruire dalla riga di comando al di fuori di Eclipse, ancora, ma Eclipse mostra "esecuzione non coperta" errori nel POM, allora provate ad aggiungere questo 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> 

Come indicato nel commento sopra, questo plugin non fa nulla al di fuori di Eclipse. Indica semplicemente ad Eclipse quando eseguire il plugin JAXB, poiché Eclipse non è abbastanza intelligente da capirlo da solo.

Ho trovato questo snippet su another StackOverflow question e l'ho adottato nel plugin "jaxb2-maven-plugin" piuttosto che nel plugin in questione nell'altra domanda.

+0

Questa mattina ho fatto lo stesso di sopra e ha corretto il mio errore di eclissi. – Venky

3

È anche possibile passare a maven-jaxb2-plugin che supporta in M2E. La risposta di Steve Perkins sopra è generalmente applicabile a quei plugin che M2E non supporta, però.

+0

Io uso 'maven-jaxb2-plugin' con l'ultima versione (0.13.1) nel mio progetto e ancora ottengo lo stesso errore in eclissi come mostrato nella domanda. Applicare le giunture di risposta di Steve Parkins solo per risolvere il problema. – MJar

0

Non sono sicuro se questo si applica al proprio ambiente, ma se l'app è suddivisa in moduli Maven, la soluzione migliore che corrisponde alle mie esigenze che ho trovato finora è quella di rimuovere tutti i moduli interessati dall'IDE di eclipse. Ogni volta che ho bisogno di rigenerare mi baso semplicemente costruire da riga di comando con mvn install. Eclipse utilizza quindi i pacchetti dal repository e non sta tentando di creare da solo, non è necessario il violino runOnIncremental (che stavo usando da un po 'di tempo), nessun modulo/linea rossa, anche build più veloci.

Problemi correlati