/ El objetivo de / jaxb2 no se invoca - jaxb, maven-3, ciclo de vida, maven-jaxb2-plugin

El objetivo jaxb2 no se invoca - jaxb, maven-3, ciclo de vida, maven-jaxb2-plugin

Estoy usando maven-jaxb2-plugin para generar algunas clases desde xsd. Se define en pom niño de la siguiente manera:

<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.8.0</version>
<executions>
<execution>
<id>jaxb2-generate</id>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<forceRegenerate>true</forceRegenerate>
<!-- Generate classes from XSD (XML Schema) using JAXB -->
<schemaDirectory>src/main/resources/com/reportcenter/settings/</schemaDirectory>
<generatePackage>com.reportcenter.settings</generatePackage>
<schemaIncludes>
<include>**/*.xsd</include>
</schemaIncludes>
<strict>false</strict>
<extension>true</extension>
<plugins>
<plugin>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics</artifactId>
<version>0.6.2</version>
</plugin>
<plugin>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics-annotate</artifactId>
<version>0.6.2</version>
</plugin>
</plugins>
<args>
<arg>-Xannotate</arg>
<arg>-XtoString</arg>
<arg>-Xcopyable</arg>
</args>
</configuration>
</plugin>
</plugins>
</pluginManagement>

El problema es que el jaxb2 no se llama desde mvninstalar o mvn compilar o mv generar-fuentes. Si llamo a mvn jaxb2: genero (como el nombre del objetivo) las clases se crean OK. Miré algunas preguntas aquí y usé las respuestas proporcionadas, pero todavía me falta algo. Gracias.

Respuestas

6 para la respuesta № 1

Renuncia: Soy el autor de la maven-jaxb2-plugin.

Parece que solo configurar el plugin en pluginManagement pero no lo hagas utilizar en tu build parte.

Así es como debería verse:

<project ...>
...
<build>
<plugins>
...
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.12.3</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
</plugin>
...
</plugins>
</build>
...
</project>

Algunos otros comentarios sobre su configuración:

  • 0.8.0 Es una versión muy antigua, 0.12.3 es el actual
  • Con el moderno Maven ya no necesitas configurar maven-compiler-plugin con source/target versión 1.6.
  • No utilice forceRegenerate.
  • Considere el uso de archivos de enlace en lugar de generatePackage.
  • Versión actual de jaxb2-basics es 0.9.2.

4 para la respuesta № 2

Me encontré con un error relacionado con este complemento y con la integración de Eclipse Maven.

La mayoría de las búsquedas de una respuesta fueron infructuosas, pero a menudo conducen a este hilo. Por lo tanto, voy a publicar el problema, y ​​una solución aquí, para cualquier otro que se tope con él.

Al utilizar el complemento maven-jaxb2-plugin: 0.12.3 correctamente en maven en la línea de comandos, en Eclipse, la generación de la fuente fallará con el siguiente error:

Ejecución por defecto del gol. org.jvnet.jaxb2.maven2: maven-jaxb2-plugin: 0.12.3: generar error: A clase obligatoria faltaba mientras se ejecutaba org.jvnet.jaxb2.maven2: maven-jaxb2-plugin: 0.12.3: generar: es / sun / xml / bind / api / ErrorListener

Varios intentos de agregar archivos jar que contienenla clase que estaba buscando solo daría lugar a que faltara otra clase, ir a un agujero de conejo del infierno del archivo jar y las clases mal adaptadas que no podían resolverse.

No sé si el problema aquí es algo que está roto en la integración de Eclipse / M2E, o si el problema está en la pila de dependencias de maven-jaxb2-plugin.

Pero la solución es lanzar Eclipse (no los JREs / JDK instalados en eclipse) con un JDK, en lugar de un JRE.

La forma más fácil de hacerlo es agregar -vm parámetro a su archivo eclipse.ini:

-startup plugins/org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar
-vm C:Program FilesJavajdk1.8.0_31binjavaw.exe
--launcher.library plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.200.v20150204-1316
-product
...snip...

1 para la respuesta № 3

Actualizar a la versión 0.13.2 + Felicitaciones a @lexicore por el comentario a continuación