2012-03-29 9 views
0

Wie kann ich eine Episode mit Maven generieren? Ich bekomme jetzt eine Fehlermeldung: an operand is missing (org.apache.cxf:cxf-xjc-plugin:2.4.0:xsdtojava:generate-sources:generate-sources)XJC-Episode mit Maven

Hier mein Plugin:

<plugin> 
      <groupId>org.apache.cxf</groupId> 
      <artifactId>cxf-xjc-plugin</artifactId> 
      <version>2.4.0</version> 
      <configuration> 
       <extensions> 
        <extension>org.apache.cxf.xjcplugins:cxf-xjc-dv:2.4.0</extension> 
       </extensions> 
      </configuration> 
      <executions> 
       <execution> 
        <id>generate-sources</id> 
        <phase>generate-sources</phase> 
        <goals> 
         <goal>xsdtojava</goal> 
        </goals> 
        <configuration> 
         <xsdOptions> 
          <xsdOption> 
           <extension>true</extension> 
           <xsd>my.xsd</xsd> 
           <packagename>mypackage</packagename> 
           <extensionArgs> 
            <arg>-episode</arg> 
           </extensionArgs> 
          </xsdOption> 
         </xsdOptions> 
        </configuration> 

       </execution> 
       <execution> 
       <configuration> 
         <xsdOptions> 
       <xsdOption> 
         <extension>true</extension> 
          <xsd>my.xsd</xsd> 
         <extensionArgs> 
          <arg>-Xdv</arg> 
         </extensionArgs> 
        </xsdOption> 
         </xsdOptions> 
        </configuration> 

       </execution> 


      </executions> 

Edit: Erstellung der Folge funktioniert gut. In einem anderen Projekt wird die JAR-Datei, die die Episode enthält, im Attribut angegeben. Aber ich bekomme eine Ausnahme: Error while parsing schema(s).Location [ file:/D:/workspace/XXX/src/test/resources/XXX.xsd{45,32}]. om.sun.istack.SAXParseException2: compiler was unable to honor this conversion customization. It is attached to a wrong place, or its inconsistent with other bindings. nested in com.sun.istack.SAXParseException2: (the above customization is attached to the following location in the schema)

Welches ist die xsd mit Episodendaten, die im Endprodukt enthalten sein wird. Es ist ein paar xjc: javaType-Adapterreferenz in dieser Zeile. Kann das Probleme verursachen?

Antwort

1

Andere Plugin von dem, was Sie verwenden, aber unten geschnippelt verwendet, um für mich vor einigen Jahren zu arbeiten. Vielleicht möchten Sie sehen, ob eine neuere Version des Plugins verfügbar ist usw. Optimieren Sie auch, um Ihr Schema zu verwenden und entfernen Sie die Anpassung der Bindungen, wenn Sie nicht benötigt werden.

<plugin> 
    <groupId>org.jvnet.jaxb2.maven2</groupId> 
    <artifactId>maven-jaxb2-plugin</artifactId> 
    <version>0.7.0</version> 
    <executions> 
     <execution> 
     <goals> 
      <goal>generate</goal> 
     </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <schemaDirectory>${basedir}/src/main/xsd</schemaDirectory> 
     <schemaIncludes> 
     <schemaInclude>Core.xsd</schemaInclude> 
     </schemaIncludes> 
     <bindingDirectory>${basedir}/src/main/xjb</bindingDirectory> 
     <bindingIncludes> 
     <bindingInclude>JaxbBindings.xjb</bindingInclude> 
     </bindingIncludes> 
     <generateDirectory>${project.build.directory}/generated-sources/jaxb</generateDirectory> 
     <episode>true</episode> 
     <episodeFile>${project.build.directory}/generated-sources/jaxb/META-INF/sun-jaxb.episode</episodeFile> 
     <verbose>true</verbose> 
    </configuration> 
    <dependencies> 
     <dependency> 
     <groupId>com.sun.xml.bind</groupId> 
     <artifactId>jaxb-impl</artifactId> 
     <version>2.1.10</version> 
     </dependency> 
     <dependency> 
     <groupId>org.jvnet.jaxb2_commons</groupId> 
     <artifactId>jaxb-xjc</artifactId> 
     <version>2.1.10</version> 
     </dependency> 
    </dependencies> 
    </plugin> 
+0

Danke dies bereits funktioniert, aber jetzt renne ich in Probleme während der Verwendung der Episode. Irgendwelche Ideen dazu? siehe Bearbeiten. –

+0

Soweit ich mich erinnere, um Glas mit Episode zu verbrauchen, müssen Sie es nur an wsimport oder xjc übergeben, es sollte keine zusätzlichen Parameter benötigt werden. Ich bin verwirrt, warum Sie Verweise auf "Datei:/D:/Arbeitsbereich" im Fehler-Stack haben. Haben Sie Verweise auf ein Schema, das sich irgendwo in Ihren Dateien befindet? Der Standardweg wäre, das Schema in Ihrem jar zu packen und es vom Klassenpfad aus zu referenzieren. – maximdim

+0

Ich habe eine Bibliothek mit xsd und ein Projekt mit einem anderen xsd, das Elemente aus der Bibliothek xsd verwendet. Dies sind zwei verschiedene Projekte. Das endgültige Produktprojekt entpackt das xsd aus dem Glas für den endgültigen Versand an das Produktionssystem. Das Endprodukt xsd bezieht sich auf die Bibliothek xsd, deshalb gibt es eine relative Referenz, die Stapelspur druckt nur die absoluten Pfade. Das Entfernen der 'xjc: javaType'-Annotation löste das Problem, aber das ist immer noch ein seltsames Problem. In meinem Endprodukt pom passiere ich die Abhängigkeit für die Bibliothek, da sonst die Folge nicht berücksichtigt wird und Lib Code erstellt wird. –