Generar clases con jaxb2-maven-plugin desde WSDL

Tengo problemas para configurar jaxb2-maven-plugin para generar clases Java desde un WSDL y múltiples archivos XSD que existen en el mismo directorio estándar src/main/xsd .

cómo usar el plugin maven jaxb2 con XSD en línea? se relaciona solo porque las respuestas sugieren correctamente el uso del parámetro wsdl en la configuración del complemento, pero esa pregunta se refiere realmente a los XSD en línea y mis XSD son externos.

Los parámetros de la meta del plugin se enumeran aquí .

La configuración de mi complemento es:

  org.codehaus.mojo jaxb2-maven-plugin 1.5   xjc  xjc     com.xymodel true   

Estoy probando esto con mvn -X clean jaxb2:xjc pero el plugin ignora el .wsdl como se ve en la salida de depuración

 [DEBUG] accept false for file c:\projects\foo\src\main\xsd\service.wsdl [DEBUG] accept true for file c:\projects\foo\src\main\xsd\datatypes.xsd [DEBUG] accept true for file c:\projects\foo\src\main\xsd\more-datatypes.xsd 

Al examinar el resultado de depuración de Maven de los argumentos que se pasan a JAXB XJC (y un poco de prueba y error) encontré que necesitaba suministrar 2 parámetros de configuración más al plugin.

Esto detiene el escaneo del complemento para archivos XSD y solo usa .wsdl como fuente. Los archivos XSD se incluyen en el WSDL como directivas, por ejemplo, que se resuelven localmente y todos los tipos del WSDL y XSD se generan como clases de Java.

La sección de configuración que funcionó para mí es:

  com.xymodel true false service.wsdl  

Sin los false Maven con:

org.apache.maven.lifecycle.LifecycleExecutionException: Error al ejecutar el objective org.codehaus.mojo: jaxb2-maven-plugin: 1.5: xjc (default-cli) en el proyecto foo: No se pudo procesar el esquema: / c: / proyectos / foo /src/main/xsd/service.wsdl

Si está generando wsdl y xsd, intente poner en una configuración de ejecución diferente: puede que no tenga el mismo schemaDirectory o el complemento no se ejecutará correctamente la segunda ejecución, ya que almacena en caché las ejecuciones basadas en esta variable. Te aconsejo que lo hagas como

   org.codehaus.mojo jaxb2-maven-plugin 1.6   generate-sri-facturas generate-sources  xjc   target/generated-sources/sri ${commonsource.packageName} src/main/resources/schema/xsd factura_v1.1.0.xsd    generate-sri-autorizacion-comprobantes generate-sources  xjc   target/generated-sources/sri/autorizacion ${commonsource.packageName}.autorizacion true false src/main/resources/schema/wsdl AutorizacionComprobantes.wsdl     

xsd una xsd y una carpeta wsdl para separar las configuraciones.

He intentado jaxb2-maven-plugin que genera el archivo java

  org.codehaus.mojo jaxb2-maven-plugin    xjc     src/main/webapp/schemas/ true src/main/java   

Para ejecutar esto, he usado el comando

 mvn jaxb2:xjc 

Intenta esto, generará las clases jaxb en tu carpeta src. Espero que estés buscando esto.

Puedes usar el siguiente código en la configuración:

    com.example.demo.wsdl  true  false  horarios.wsdl  ${project.basedir}/src/main/resources  ${project.basedir}/src/main/java  false