{"id":265,"date":"2024-06-01T10:01:17","date_gmt":"2024-06-01T08:01:17","guid":{"rendered":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/?p=265"},"modified":"2024-06-01T10:01:18","modified_gmt":"2024-06-01T08:01:18","slug":"jaxb-code-erzeugung-maven","status":"publish","type":"post","link":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/?p=265","title":{"rendered":"JAXB &#8211; Code Erzeugung &#8211; Maven"},"content":{"rendered":"\n<p>Es gibt verschiedene Plugins, um mit Maven Code aus XML-Schemata zu erzeugen. Im Allgemeinen findet man als Erstes das jaxb2-maven-plugin Plugin.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>  &lt;plugin>\n                &lt;groupId>org.codehaus.mojo&lt;\/groupId>\n                &lt;artifactId>jaxb2-maven-plugin&lt;\/artifactId>\n                &lt;executions>\n                    &lt;execution>\n                        &lt;id>xjc&lt;\/id>\n                        &lt;phase>generate-sources&lt;\/phase>                        \n                        &lt;goals>\n                            &lt;goal>xjc&lt;\/goal>\n                        &lt;\/goals>\n                    &lt;\/execution>\n                &lt;\/executions>\n                &lt;configuration>\n                    &lt;xjbSources>\n                        &lt;xjbSource>src\/main\/resources\/global.xjb&lt;\/xjbSource>\n                    &lt;\/xjbSources>\n                    &lt;sources>\n                        &lt;source>${basedir}\/src\/main\/resources\/xsd\/Dieter.xsd&lt;\/source>\n                    &lt;\/sources>\n                    &lt;outputDirectory>${basedir}\/target\/generated-sources&lt;\/outputDirectory> \n                    &lt;clearOutputDir>true&lt;\/clearOutputDir>\n                    &lt;packageName>com.example.jaxb&lt;\/packageName>\n                &lt;\/configuration>\n            &lt;\/plugin><\/code><\/pre>\n\n\n\n<p>Bei meinen aktuellen Jakarta Projekten erzeugt dieses Plugin allerdings Fehlermeldungen:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">[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<\/pre>\n\n\n\n<p>Da ich keine Zeit hatte den Fehler nachzugehen, habe ich nach kurzer Suche folgende Seite gefunden<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/highsource\/jaxb-tools?tab=readme-ov-file#jaxb-maven-plugin\">https:\/\/github.com\/highsource\/jaxb-tools?tab=readme-ov-file#jaxb-maven-plugin<\/a><\/p>\n\n\n\n<p>Dort wird ein aktuell gepflegtes Plugin bereitgestellt. Leider gibt es ann\u00e4hernd 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<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>            &lt;plugin>\n                &lt;groupId>org.jvnet.jaxb&lt;\/groupId>\n                &lt;artifactId>jaxb-maven-plugin&lt;\/artifactId>\n                &lt;version>4.0.0&lt;\/version>\n                &lt;executions>\n                    &lt;execution>\n                        &lt;goals>\n                            &lt;goal>generate&lt;\/goal>\n                        &lt;\/goals>\n                    &lt;\/execution>\n                &lt;\/executions>\n                &lt;configuration>\n                    &lt;schemaDirectory>${basedir}\/src\/main\/resources\/xsd&lt;\/schemaDirectory>\n                    &lt;schemaIncludes>**\/*.xsd&lt;\/schemaIncludes>\n                    &lt;generateDirectory>${basedir}\/target\/generated-sources&lt;\/generateDirectory>\n                    &lt;bindingDirectory>${basedir}\/src\/main\/resources\/&lt;\/bindingDirectory>\n                &lt;\/configuration>                            \n            &lt;\/plugin><\/code><\/pre>\n\n\n\n<p>Wichtig ist, dass das rekursive Durchlaufen mit <code>schemaIncludes <\/code>explizit konfiguriert werden muss. Au\u00dferdem werden die Bindings im Verzeichnis der XSDs erwartet, k\u00f6nnen aber mit <code>bindingDirectory <\/code>auch in anderen Verzeichnissen gesucht werden.<\/p>\n\n\n\n<p>Das Plugin ist einfach zu konfigurieren und damit schnell am Start &#8230;. Empfehlung!!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Es gibt verschiedene Plugins, um mit Maven Code aus XML-Schemata zu erzeugen. Im Allgemeinen findet man als Erstes das jaxb2-maven-plugin 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: [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-265","post","type-post","status-publish","format-standard","hentry","category-allgemein"],"_links":{"self":[{"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/posts\/265","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=265"}],"version-history":[{"count":2,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/posts\/265\/revisions"}],"predecessor-version":[{"id":267,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/posts\/265\/revisions\/267"}],"wp:attachment":[{"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=265"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=265"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=265"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}