2009-05-21 7 views
12

Ich habe diese Maven "Aufgabe" Java-Klassen aus einer XSD-Datei mit JAXB zu generieren.Präfixing JAXB generierte Klassen

Für einen XSD-Typ "Benutzer" generiert es eine Klasse namens "Benutzer" (Duh). Ich habe aber auch eine JPA-Entity-Klasse namens "User" (obwohl in einem anderen Paket). Kann ich die obige XML-Konfiguration ändern, damit JAXB die generierten Klassen mit "XML" voranstellt?

Antwort

19

Dies ist eine allgemeine Anforderung. Sie können dies tun, indem Sie eine zusätzliche JAXB-Bindungsdatei zur Verfügung stellen, um anzupassen, wie JAXB die Namen des Schematyps in Java-Klassennamen umsetzt.

Diese Dateien enden normalerweise in der Erweiterung ".xjb". Sie benötigen für Ihr Schema zu erstellen, zum Beispiel:

<jxb:bindings version="1.0" 
    xmlns:jxb="http://java.sun.com/xml/ns/jaxb" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" 
    jxb:extensionBindingPrefixes="xjc"> 

    <jxb:bindings schemaLocation="nl.company.service.xsd" node="/xs:schema"> 
     <jxb:schemaBindings> 
      <jxb:nameXmlTransform> 
       <jxb:typeName prefix="XML"/> 
       <jxb:anonymousTypeName prefix="XML"/> 
      </jxb:nameXmlTransform> 
     </jxb:schemaBindings> 
    </jxb:bindings> 

</jxb:bindings> 

Nachdem Sie das getan haben, fallen die XJB Datei irgendwo in Ihrem Build-Verzeichnis und Maven sagen Gebrauch davon während der Übersetzung zu machen:

<includeBindings> 
    <includeBinding>mybindings.xjb</includeBinding> 
</includeBindings> 

Und hier ist ein Hinweis für die Straße: Wenn Sie in einem Pfad sind, der Leerzeichen enthält (zB "Dokumente und Einstellungen \ Benutzer \ Projekt"), wird JAXB mit seltsamen Fehlern umfallen.

+0

Die maven-jaxb2-Plugin Konfiguration benötigt die Tags "bindingIncludes" und "bindingInclude", nicht "includeBindings" und "includeBinding" – kevinmrohr

Verwandte Themen