JAXB XJC Möglich zu unterdrücken, kommentieren Schöpfung in den generierten Klassen?
Unserem Projekt verwendet XJC generiert Java-Klassen aus einem XSD. Ich bin mit JAVA EE 6.
Wenn alle die XSDs haben wir werden neu generiert, den generierten Klassen enthalten diesen Kommentar am Anfang der Datei:
//Generated on: 2011.02.23 at 02:17:06 PM GMT
Ist es möglich zu unterdrücken, dieser Kommentar? Der Grund dafür ist, dass wir nutzen SVN für die Versionskontrolle, und jedes mal, wenn wir regenerieren unsere Klassen, jede einzelne Datei zeigt, wie änderungen im SVN, obwohl die einzige Sache, die unterscheidet, ist dieser Kommentar. Also würde ich gerne entfernen Sie den Kommentar zusammen, wenn möglich.
Es ist ein -no-header
Richtlinie, aber ich will nicht zu entfernen, der gesamte header, so dass auch künftige Generationen wissen, dass es eine generierte Datei von einem Werkzeug, und, dass änderungen überschrieben werden. Ich will nur zum entfernen des Zeitstempels. (Oder alternativ, würde ich entfernen Sie den eingebauten header und fügen Sie dann meinen eigenen header irgendwie.)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn es nicht möglich über eine option können Sie post-Prozess generierten Dateien selbst.
Das hat einen ganz bestimmten use-case hatten wir es zu tun auf diese Weise auf unser Projekt...
Wir verwenden Maven und wir mit der Ausführung eines bestimmten Skripts, nachdem die Java-Klassen generiert wurden, und bevor wir kompilieren und in einem Paket zu einem distriuable JAR.
Ich bin mit diesem mvn plugin ersetzt die
//Generated on: 2011.02.23 at 02:17:06 PM GMT
Linie:prepare-package
phase eher als diegenerate-sources
phase? Ihre version ändern würde, die Quellen nach Zusammenstellung...Ich bin spät zur party, aber seit der version 2.0 des
jaxb2-maven-plugin
gibt es einenoGeneratedHeaderComments
- Konfiguration option. (siehe die JAXB-2 Maven Plugin-Docs)Können Sie es verwenden, wie diese:
So dass keine Notwendigkeit für ein anderes plugin oder Skript ausgeführt werden soll.
Wenn Sie möchten, dass ein Haftungsausschluss, können Sie verwenden Sie eine der Techniken bereits erwähnt, zu injizieren, wo es wollte.
Ich weiß, das ist 2 Jahre nach der Tat, aber weil die Klassen generiert werden sind Sie nicht unbedingt erforderlich, im SVN. Was muss im SVN ist das schema oder was auch immer-Datei, die Sie verwenden für die Quelle zur Erzeugung der Klassen. Solange Sie die Quelle und die tools zum generieren der Klassen, die Klassen in SVN sind redundant, und als Sie sah, problematisch im SVN oder alle SCCS. So setzen Sie die schema-Datei ist im SVN und vermeiden das Thema ganz.
Bauen auf cata Antwort (von Ihnen positiv bewertet werden) die maven-replacer-plugin ist der Weg zu gehen. Ich habe kommen mit dem folgenden, dass die Streifen aus dem gesamten Kommentar (nicht nur den timestamp), die Sie ersetzen mit Ihrem Kommentar-Datei (Lizenz etc).
Den einen Punkt zu beachten ist, dass die
<value>
element behandelt der text wörtlich. Wenn Sie So wollen, einen Zeilenumbruch in den Ersatz-text, den Sie benötigen, um einen Zeilenumbruch in Ihrem pom.xml Datei (wie ich schon oben gezeigt).Wenn Sie ant, das folgende snippet kann nützlich sein, für den Austausch der Kommentare:
Was Sie sollten Sie :
Erstellen Sie Ihre Klassen in Ziel :
Wenn Sie "neues Ziel" ignorieren-Liste (svn), das ist alles.
Ich will auch text-header mit der Warnung über die Klassen automatisch generiert wurde und sollte nicht manuell geändert werden, aber da ich solche Dateien in git ich nicht wollen, dass es immer änderungsdatum von generation.
Dass header generiert, in com.Sonne.tools.xjc.Optionen#getPrologComment Methode. So im wesentlichen es nennen:
Messages.FILE_PROLOG_COMMENT
definiert alsDriver.FilePrologComment
. Mit weiteren debugging fand ich es verwenden standard-Java-Lokalisierung bündelt.So, zu ändern-header-format, die wir nur können Ihnen unseren Eigenschaften überschreiben, die für Ihre Werte aus MessageBundle.Eigenschaften.
Wir können es in zwei Weise:
src/main/resources/com/sun/tools/xjc/MessageBundle.properties
im Projekt-und change-TasteDriver.FilePrologComment
wie Sie es wünschen.XJC
Abhängigkeit. Also besser empfehle ich Stelle es alssrc/main/resources/com/sun/tools/xjc/MessageBundle_en.properties
(Hinweis:_en
suffix im Dateinamen) - Datei und Stelle dort nur die Eigenschaften, die Sie auch wirklich ändern wollen. So etwas wie:Sicherzustellen, dass die Datei in der compiler-classpath, vor allem, wenn Sie nennen Sie es von einigen plugins.
Dass ist gemeinsamen Mechanismus für die übersetzung. Siehe Verwandte Antwort: JAXB englischen Kommentare im generierten Datei