Frage

Das Szenario ist folgendes: Ich habe ein Java-Paket ( myapp.config ), das alle meine JAXB-kommentierten Klassen enthält, von denen ich eine XML-Schema-Datei generieren möchte. In der Packung gibt es auch eine paket-info.java -Datei, die das @xmlschema Annotation auf dem Paketelement enthält, somit im gesamten Paket gültig: . generasacodicetagpre.

Wenn ich das Befehlszeilenwerkzeug schemagen ausführte, das mit dem JDK geliefert wird, generasacodicetagpre.

Ich erhalte das richtige Ergebnis: Das Root-Element in der erzeugten schema1.xsd -Datei enthält den TargetNameStace und andere notwendige Attribute: generasacodicetagpre.

Wenn ich jedoch dieselbe Aufgabe in meinem Ameisenskript ausführen möchte, generasacodicetagpre.

Das Schemagens-Tool scheint die Namensspace-Anmerkungen vollständig zu ignorieren, da in der resultierenden schema1.xsd -Datei keine Spur von ihnen vorhanden ist: generasacodicetagpre.

Wenn ich die Task SCHEOS in BEBEGE und DEBUGE -Modus ausführte, wird offensichtlich, dass das Werkzeug alle lastet. Java Dateien, außer package-info.java , deshalb weiß es nichts über die Namespaces.

Haben Sie dieses seltsame Verhalten vorher getroffen? Warum verarbeitet das Befehlszeilenwerkzeug die Paketinformationsdatei, und die Ameisenaufgabe ist nicht? Was soll ich tun, um die Ameisenaufgabe zu funktionieren?

Vielen Dank im Voraus,
Buc

War es hilfreich?

Lösung

Fortunately I found the solution, I post it for those who run into the same problem in the future:

The reason it did not work is that I called the schemagen task in the wrong way (this can happen, if there is so little documentation or examples as in the case of schemagen). Instead of writing:

<schemagen srcdir="src/myapp/config" destdir="dist">
    <include name="*.java"/>
</schemagen>

You should move the specific part of the path into the include element:

<schemagen srcdir="src" destdir="dist">
    <include name="myapp/config/*.java"/>
</schemagen>

I'm still not sure why this is happening, but this way, the schemagen processor recognizes that the myapp/config directory in fact designates the java package myapp.config and by knowing that it is a package, it will also read the package info file.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top