These are the steps to create java classes from xsd files from Eclipse using the JAXB2 Maven plugin:
1) Create a Maven project in Eclipse
2) Add the JAXB2 Maven plugin to the pom.xml file
In the pom.xml file:
- Add the JAXB2 plugin dependency.
- Configure the location of schema files.
- Configure the location of the global binding directory.
- Configure the directory for generated classes.
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.9.0</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<schemaDirectory>${project.basedir}/src/main/xsd</schemaDirectory>
<schemaIncludes>
<include>Patient.xsd</include>
</schemaIncludes>
<bindingDirectory>${project.basedir}/src/main/xsd</bindingDirectory>
<bindingIncludes>
<include>global.xjb</include>
</bindingIncludes>
<generateDirectory>${project.basedir}/src/generated</generateDirectory>
</configuration>
</plugin>
3) Configure datatype binding rules in the xjb file
This is the content of the global.xjb file:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<jaxb:bindings version="2.0"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
jaxb:extensionBindingPrefixes="xjc">
<jaxb:globalBindings>
<xjc:simple />
<xjc:serializable uid="-1" />
<jaxb:javaType name="java.util.Calendar" xmlType="xs:dateTime"
parseMethod="javax.xml.bind.DatatypeConverter.parseDateTime"
printMethod="javax.xml.bind.DatatypeConverter.printDateTime" />
</jaxb:globalBindings>
</jaxb:bindings>
4) Create Java Classes
Right-click on the project and select Run As > Maven Generate Sources. The classes should be created in the generate directory mentioned in step 2. The package name will match the target namespace in the xsd file.