使用WSDL中的jaxb2-maven-plugin生成类

我无法配置jaxb2-maven-plugin来从WSDL和多个XSD文件生成Java类,这些文件都存在于同一标准目录src/main/xsd

如何使用内联XSD的jaxb2 maven插件? 只是因为答案正确地建议在插件配置中使用wsdl参数,但该问题确实与内联XSD有关,而我的XSD是外部的。

此处列出了插件目标参数。

我的插件配置是:

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

我用mvn -X clean jaxb2:xjc测试这个,但插件忽略了.wsdl如调试输出中所示

 [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 

通过检查传递给JAXB XJC的参数的Maven调试输出(以及一些试验和错误),我发现我需要为插件提供2个以上的配置参数。

这会停止对XSD文件的插件扫描,只使用.wsdl作为源。 例如,XSD文件作为指令包含在WSDL中,这些指令在本地解析,导致WSDL和XSD中的所有类型都生成为Java类。

对我有用的配置部分是:

  com.xymodel true false service.wsdl  

没有false Maven错误:

org.apache.maven.lifecycle.LifecycleExecutionException:无法在项目foo上执行目标org.codehaus.mojo:jaxb2-maven-plugin:1.5:xjc(default-cli):无法处理架构:/ c:/ projects / foo /src/main/xsd/service.wsdl

如果你正在生成wsdl和xsd,那么尝试放入不同的执行配置:它可能没有相同的schemaDirectory或者插件在第二次执行时不会成功运行,因为它会根据此变量缓存执行。 我建议这样做

   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和一个wsdl文件夹来分离配置。

我试过生成java文件的jaxb2-maven-plugin

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

为了运行这个,我使用了命令

 mvn jaxb2:xjc 

试试这个,它将生成jaxb类到你的src文件夹中。 希望你是在寻找这个。

您可以在配置中使用以下代码:

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