andyb andyb - 9 months ago 405
Java Question

Generate classes with jaxb2-maven-plugin from WSDL

I am having trouble configuring the

to generate Java classes from a WSDL and multiple XSD files that all exist in the same standard directory

how to use jaxb2 maven plugin with inline XSD? is related only in that the answers correctly suggest using the
parameter in the plugin config but that question is really concerned with inline XSDs and my XSDs are external.

The plugin goal parameters are listed here.

My plugin configuration is:


I am testing this with
mvn -X clean jaxb2:xjc
but the plugin is ignoring the
as seen in the debug output

[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


By examining the Maven debug output of the arguments being passed to the JAXB XJC (and a bit of trial and error) I found that I needed to supply 2 more configuration parameters to the plugin.

This stops the plugin scanning for XSD files and just uses the .wsdl as the source. The XSD files are included in the WSDL as<xsd:include schemaLocation="datatypes.xsd" /> directives, for example, which are resolved locally resulting in all types from the WSDL and XSD being generated as Java classes.

The configuration section that worked for me is:


Without the <xmlschema>false</xmlschema> Maven errors with:

org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.mojo:jaxb2-maven-plugin:1.5:xjc (default-cli) on project foo: Could not process schema: /c:/projects/foo/src/main/xsd/service.wsdl