Es gibt verschiedene Plugins, um mit Maven Code aus XML-Schemata zu erzeugen. Im Allgemeinen findet man als Erstes das jaxb2-maven-plugin Plugin.
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<executions>
<execution>
<id>xjc</id>
<phase>generate-sources</phase>
<goals>
<goal>xjc</goal>
</goals>
</execution>
</executions>
<configuration>
<xjbSources>
<xjbSource>src/main/resources/global.xjb</xjbSource>
</xjbSources>
<sources>
<source>${basedir}/src/main/resources/xsd/Dieter.xsd</source>
</sources>
<outputDirectory>${basedir}/target/generated-sources</outputDirectory>
<clearOutputDir>true</clearOutputDir>
<packageName>com.example.jaxb</packageName>
</configuration>
</plugin>
Bei meinen aktuellen Jakarta Projekten erzeugt dieses Plugin allerdings Fehlermeldungen:
[ERROR] Failed to execute goal org.codehaus.mojo:jaxb2-maven-plugin:3.2.0:xjc (xjc) on project backOfficeBillingEjb: Execution xjc of goal org.codehaus.mojo:jaxb2-maven-plugin:3.2.0:xjc failed: A required class was missing while executing org.codehaus.mojo:jaxb2-maven-plugin:3.2.0:xjc: org/eclipse/persistence/internal/jaxb/WrappedValue
Da ich keine Zeit hatte den Fehler nachzugehen, habe ich nach kurzer Suche folgende Seite gefunden
https://github.com/highsource/jaxb-tools?tab=readme-ov-file#jaxb-maven-plugin
Dort wird ein aktuell gepflegtes Plugin bereitgestellt. Leider gibt es annähernd keine Dokumentation im Web. Wenn man das Plugin jedoch einbindet, ist die Dokumentation im Eclipse POM Editor online gut nachvollziehbar. Eine erste einfache Konfiguration sieht wie folgt aus
<plugin>
<groupId>org.jvnet.jaxb</groupId>
<artifactId>jaxb-maven-plugin</artifactId>
<version>4.0.0</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<schemaDirectory>${basedir}/src/main/resources/xsd</schemaDirectory>
<schemaIncludes>**/*.xsd</schemaIncludes>
<generateDirectory>${basedir}/target/generated-sources</generateDirectory>
<bindingDirectory>${basedir}/src/main/resources/</bindingDirectory>
</configuration>
</plugin>
Wichtig ist, dass das rekursive Durchlaufen mit schemaIncludes
explizit konfiguriert werden muss. Außerdem werden die Bindings im Verzeichnis der XSDs erwartet, können aber mit bindingDirectory
auch in anderen Verzeichnissen gesucht werden.
Das Plugin ist einfach zu konfigurieren und damit schnell am Start …. Empfehlung!!