{"id":7,"date":"2005-12-21T10:44:00","date_gmt":"2005-12-21T10:44:00","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/?p=7"},"modified":"2005-12-21T10:44:00","modified_gmt":"2005-12-21T10:44:00","slug":"jaxb-2-0-und-xjc-in-einem-ant-skript-nutzen","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2005\/12\/jaxb-2-0-und-xjc-in-einem-ant-skript-nutzen\/","title":{"rendered":"JAXB 2.0 und XJC in einem Ant-Skript nutzen"},"content":{"rendered":"<p>F\u00fcr Konfigurations-Dateien wollte ich <a href=\"https:\/\/jaxb.dev.java.net\/\"> JAXB 2.0<\/a> nutzen und es war wirklich einfach. Zuerst habe ich mit <a href=\"http:\/\/xmlbeans.apache.org\/\">XMLBeans<\/a> begonnen, was ebenfalls sehr einfach zu nutzen ist, doch die Annotationen gefielen mir bei JAXB 2.0 besser. Der Client, der auf die generierten Beans zugreift, muss nur geringf\u00fcgig ver\u00e4ndert werden, denn XMLBeans repr\u00e4sentiert Unterelemente in einem Array, w\u00e4hrenddessen JAXB eine Collection verwendet.<\/p>\n<p>Nach dem Download von JAXB m\u00fcssen sich f\u00fcr den Client im Pfad befinden: <i>jaxb-api.jar<\/i>, <i>jaxb-impl.jar<\/i>, <i>activation.jar<\/i>, <i>jsr173_1.0.jar<\/i>. F\u00fcr den Ant-Task und die Generation von Klassen aus eine Schema-Datei ist <i>jaxb-xjc.jar<\/i> verantwortlich.<\/p>\n<p><\/p>\n<p>F\u00fcr den Ant-Task meldet man (f\u00fcr Eclipse) am einfachsten alle genannten Java-Archive unter den Ant &gt; Runtime &gt; Classpath &gt; Global Entries an. Die Ant-Datei nutzt f\u00fcr die Generation der Bean dann folgendes:<\/p>\n<p><\/p>\n<pre>&lt;project default=&quot;all&quot; basedir=&quot;.&quot;&gt;<br \/><br \/> &lt;target name=&quot;all&quot;&gt;<br \/><br \/>  &lt;xjc schema=&quot;schemas\/ppt_join.xsd&quot; target=&quot;..\/src\/core&quot;<br \/>       package=&quot;com.javatutor.cw.ppt.jaxb.pptjoin&quot; \/&gt;<\/pre>\n<p><\/p>\n<pre> &lt;\/target&gt;<br \/><br \/>&lt;\/project&gt;<\/pre>\n<p><\/p>\n<p>Die Schema-Datei sieht f\u00fcr meine Konfigurations-Dateien so aus:<\/p>\n<p><\/p>\n<pre>&lt;xs:schema<br \/>xmlns:xs=&quot;http:\/\/www.w3.org\/2001\/XMLSchema&quot;<br \/>xmlns:po=&quot;http:\/\/javatutor.com\/pptjoin&quot;<br \/>targetNamespace=&quot;http:\/\/javatutor.com\/pptjoin&quot;<br \/>elementFormDefault=&quot;qualified&quot;&gt;<br \/>&lt;xs:element name=&quot;ppt-join&quot;&gt;<br \/>&lt;xs:complexType&gt;<br \/>&lt;xs:sequence&gt;<br \/>&lt;xs:element name=&quot;options&quot; type=&quot;po:options&quot; minOccurs=&quot;0&quot; maxOccurs=&quot;1&quot; \/&gt;<br \/>&lt;xs:element name=&quot;fileset&quot; type=&quot;po:fileset&quot; \/&gt;<br \/>&lt;\/xs:sequence&gt;<br \/>&lt;\/xs:complexType&gt;<br \/>&lt;\/xs:element&gt;<br \/><br \/>&lt;xs:complexType name=&quot;fileset&quot;&gt;<br \/>&lt;xs:sequence&gt;<br \/>&lt;xs:element name=&quot;file&quot; type=&quot;xs:string&quot; minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot; \/&gt;<br \/>&lt;\/xs:sequence&gt;<br \/>&lt;\/xs:complexType&gt;<br \/><br \/>&lt;xs:complexType name=&quot;options&quot;&gt;<br \/>&lt;xs:sequence&gt;<br \/>&lt;xs:element name=&quot;removeHidden&quot; type=&quot;xs:boolean&quot; minOccurs=&quot;0&quot; maxOccurs=&quot;1&quot; \/&gt;<br \/>&lt;xs:element name=&quot;destination-file&quot; type=&quot;xs:string&quot; minOccurs=&quot;0&quot; maxOccurs=&quot;1&quot; \/&gt;<br \/>&lt;\/xs:sequence&gt;<br \/>&lt;\/xs:complexType&gt;<br \/><br \/>&lt;\/xs:schema&gt;<\/pre>\n<p><\/p>\n<p>Nutze ich nun JAXB 2.0? Ehrlich gesagt nicht. Denn f\u00fcr kleine Konfigurationsdateien finde ich pers\u00f6nlich JAXB etwas zu aufw\u00e4ndig. Nun bin ich wieder am Anfang, bei <a href=\"http:\/\/xstream.codehaus.org\/\">XStream<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>F\u00fcr Konfigurations-Dateien wollte ich JAXB 2.0 nutzen und es war wirklich einfach. Zuerst habe ich mit XMLBeans begonnen, was ebenfalls sehr einfach zu nutzen ist, doch die Annotationen gefielen mir bei JAXB 2.0 besser. Der Client, der auf die generierten Beans zugreift, muss nur geringf\u00fcgig ver\u00e4ndert werden, denn XMLBeans repr\u00e4sentiert Unterelemente in einem Array, w\u00e4hrenddessen [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[1],"tags":[],"class_list":["post-7","post","type-post","status-publish","format-standard","hentry","category-allgemein"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/7","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/comments?post=7"}],"version-history":[{"count":0,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/7\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=7"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=7"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=7"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}