Ich verwende JAXB für ein Projekt. Die Attraktion von JAXB ist, dass es mit dem JDK gebündelt ist. Ich habe xjc.exe in der Befehlszeile verwendet, um die .java-Dateien aus einem Schema zu generieren. Ich kann nicht scheinen, die JAXB Ameisenaufgabe zu finden, sicher, dass es einen Download bei http://jaxb.java.net gibt, aber ich möchte den JAXB benutzen, der im JDK gebündelt wird, gibt es irgendeine Weise, JAXB von ant anzurufen, welche Klasse die xjc.exe anruft ? HierWie führe ich den JAXB-Compiler von ANT
Antwort
<target name="generate-jaxb-code">
<java classname="com.sun.tools.internal.xjc.XJCFacade">
<arg value="-p" />
<arg value="com.example"/>
<arg value="xsd/sample.xsd" />
</java>
</target>
Gerade ging in der tools.jar Jagd und fand die XJCFacade.class in com.sun.tools.internal den obigen Code getestet es funktioniert es produziert Die Ausgabe als xjc.exe Es scheint, dass XJC.exe diesen Code com.sun.tools.internal.xjc.XJCFacade
anruft. Eine meiner wichtigsten Anforderungen war, dass die Ant-Datei in Eclipse arbeiten musste, ohne einen Pfad einzuschließen benennen Sie das JDK so, dass die Datei über Betriebssysteme hinweg portierbar ist. Ich gehe davon aus, dass tools.jar über die installierten JRE-Einstellungen in den Klassenpfad eingebunden ist.
ist ein hilfreicher Link:
Java SE 6 nicht die Ant-Task gesendet (siehe 7.1.3):
im Wesentlichen folgende sie:
<target name="xjc" description="....">
<exec executable="${jdk.dir}/bin/xjc.exe">
<arg value="-d"/>
<arg value="${src.dir}"/>
<arg value="-p"/>
<arg value="com.mydomain.jaxb"/>
<arg value="${etc.dir}/myschema.xsd"/>
</exec>
</target>
Vielen Dank für unsere Antwort war ich bereits mit diesem Link. Das Problem besteht darin, dass diese Lösung erfordert, dass jaxb-xjc.jar im Klassenpfad vorhanden ist und dass die Klasse, auf die für die ANT-Task verwiesen wird, an keiner Stelle im Klassenpfad vorhanden ist. Ich möchte nicht die JAXB2 RI herunterladen und nur die ANT-Aufgabe verwenden. Ich bin auf der Suche nach einer Lösung, die nichts anderes als das neueste JDK 6 aus dem Netz herunterladen und das funktioniert gut mit Eclipse ant – ams
Dank für Ihre aktualisierte Antwort war es sehr hilfreich – ams
Sie kann mehrere Beispiel Ant/JAXB Projekte in JAXB2 Basics finden:
Für den Pfad zur Schemadatei selbst (sowie für das Attribut -d), verwenden Sie anstelle von Die Pfadversion konvertiert automatisch Pfadtrennzeichen, Sonderzeichen für die Shell usw. Ohne die Verwendung des Pfades besteht die Möglichkeit einer Sicherheitslücke in der Build-Datei, wenn der Pfad oder Dateiname aus irgendwelchen externen Daten generiert wird. –
pendor