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 № 1Renuncia: 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
consource
/target
versión1.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