2012-04-30 23 views
11

Estoy usando el complemento jaxb2 xjc para generar archivos java desde XSD. Por lo tanto, se utilizan para configurar mi pom.xml de la siguiente manera:Maven JAXB2 Complemento XJC: ejecución del complemento M2E no cubierto

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

cambié mi entorno de desarrollo Eclipse Indigo y esto no funciona más. El error dice: "La ejecución del complemento no está cubierta por la configuración del ciclo de vida". Entiendo que tengo que definir la ejecución de mi complemento de manera diferente para que funcione en mi nuevo entorno.

Seguí las instrucciones en esta página M2E plugin execution not covered pero los archivos fuente no se generan al ejecutar la fase generate-sources.

¿Alguien podría mostrarme cómo refactorizar exactamente mi pom para que mis archivos se generen correctamente?

¡Gracias por tu ayuda!

+0

¿Alguna vez encontró una respuesta para este fuera de línea? Estoy tratando de resolver el mismo problema yo mismo. –

+0

Ninguno ... Pero si encuentras uno, publícalo y estaré encantado de aceptarlo :) –

Respuesta

14

Resulta que yo hice , finalmente, encontrar una respuesta! La integración de Eclipse con Maven ha tenido problemas de compatibilidad con numerosos complementos de Maven.

Cuando se puede ejecutar con éxito un Maven construir desde la línea de comandos fuera de Eclipse, todavía, pero Eclipse muestra "ejecución no cubierto" errores en su POM, a continuación, trate de añadir este 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> 

Como se indica en el comentario anterior, este complemento no hace nada fuera de Eclipse. Simplemente le dice a Eclipse cuándo ejecutar el complemento JAXB, ya que Eclipse no es lo suficientemente inteligente como para darse cuenta por sí mismo.

Encontré este fragmento en another StackOverflow question, y lo adopté para el complemento "jaxb2-maven-plugin" en lugar del complemento en cuestión en la otra pregunta.

+0

Esta mañana hice lo mismo que el anterior y se corrigió mi error de eclipse. – Venky

3

También puede cambiar al maven-jaxb2-plugin que tiene soporte en M2E. La respuesta de Steve Perkins anterior es generalmente aplicable para aquellos complementos que M2E no admite.

+0

Utilizo 'maven-jaxb2-plugin' con la última versión (0.13.1) en mi proyecto y aún obtengo el mismo error en eclipse que se muestra en la pregunta. Solo aplicando las costuras de respuesta de Steve Parkins para arreglarlo. – MJar

0

No estoy seguro de si esto se aplica a su entorno, pero si la aplicación se divide en módulos maven, la mejor solución que he encontrado hasta ahora es eliminar todos los módulos afectados de eclipse IDE. Cada vez que necesito regenerarlo simplemente construyo desde la línea de comandos con mvn install. Eclipse está utilizando paquetes de repositorio y no está intentando compilar por sí mismo, no es necesario tener ningún truco (runOnIncremental) (que estaba usando desde hace bastante tiempo), tampoco módulos/líneas rojos, también compila más rápido.

Cuestiones relacionadas