2012-08-31 3 views
5

Ich versuche, Quellen aus zwei XSD Schemata zu generieren. Mein JAXB Maven Plugin sieht wie folgt aus:Maven JAXB-Plugin, das nur eine Ausführung ausführt

<plugin> 
    <groupId>com.sun.tools.xjc.maven2</groupId> 
    <artifactId>maven-jaxb-plugin</artifactId> 
    <version>1.1.1</version> 
    <executions> 
     <execution> 
      <id>GenerateKenexa</id> 
      <goals> 
       <goal>generate</goal> 
      </goals> 
      <configuration> 
       <includeBindings> 
        <includeBinding>**/jaxb-bindings-kenexa.xml</includeBinding> 
       </includeBindings> 
       <includeSchemas> 
        <includeSchema>**/KenexaXMLConfiguration.xsd</includeSchema> 
       </includeSchemas> 
      </configuration> 
     </execution> 
     <execution> 
      <id>GenerateTalentQ</id> 
      <goals> 
       <goal>generate</goal> 
      </goals> 
      <configuration> 
       <includeBindings> 
        <includeBinding>**/jaxb-bindings-talentq.xml</includeBinding> 
       </includeBindings> 
       <includeSchemas> 
        <includeSchema>**/TalentQXMLConfiguration.xsd</includeSchema> 
       </includeSchemas> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

Die erste feine erzeugt wird. Aber die zweite nicht. Ich sehe in der Maven-Ausgabe:

[INFO] --- maven-jaxb-plugin:1.1.1:generate (GenerateKenexa) @ online.tests.management --- 
[INFO] Compiling file:/D:/Projects/GTIWebApplications/gti_online_tests_management/src/main/resources/xsd/KenexaXMLConfiguration.xsd 
[INFO] Writing output to D:\Projects\GTIWebApplications\gti_online_tests_management\target\generated-sources\xjc 
[INFO] 
[INFO] --- maven-jaxb-plugin:1.1.1:generate (GenerateTalentQ) @ online.tests.management --- 
[INFO] files are up to date 

Er sagt, dass Dateien auf dem neuesten Stand sind, aber sie sind nicht einmal erzeugt. Was könnte falsch sein?

Antwort

4

löste ich das Problem . Ich habe das Maven jaxb Plugin in maven jaxb2 Plugin geändert und jetzt funktioniert alles. Jetzt sieht meine Maven-Konfiguration wie folgt aus:

<plugin> 
    <groupId>org.jvnet.jaxb2.maven2</groupId> 
    <artifactId>maven-jaxb2-plugin</artifactId> 
    <version>0.8.2</version> 
    <executions> 
     <execution> 
      <id>GenerateKenexa</id> 
      <goals> 
       <goal>generate</goal> 
      </goals> 
      <configuration> 
       <schemaDirectory>src/main/resources/xsd</schemaDirectory> 
       <schemaIncludes> 
        <include>KenexaXMLConfiguration.xsd</include> 
       </schemaIncludes> 
       <generatePackage>com.groupgti.onlinetest.kenexa.jaxb</generatePackage> 
       <generateDirectory>${project.build.directory}/generated-sources/kenexa</generateDirectory> 
      </configuration> 
     </execution> 
     <execution> 
      <id>GenerateTalentQ</id> 
      <goals> 
       <goal>generate</goal> 
      </goals> 
      <configuration> 
       <schemaDirectory>src/main/resources/xsd</schemaDirectory> 
       <schemaIncludes> 
        <include>TalentQXMLConfiguration.xsd</include> 
       </schemaIncludes> 
       <generatePackage>com.groupgti.onlinetest.talentq.jaxb</generatePackage> 
       <generateDirectory>${project.build.directory}/generated-sources/talentq</generateDirectory> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 
+0

Danke. Gleiches Problem, gleiche Lösung. –

1

Zuerst würde ich empfehlen, separate Ausgabeordner für jede XSD <outputdirectory>${basedir}/target/generated-sources/xjc</outputdirectory>

Und zweitens, um anzugeben, versuchen Sie es als separate Plug-Einträge einzurichten, keine separaten Ausführungen:

<plugin> 
    <groupId>com.sun.tools.xjc.maven2</groupId> 
... 
<includeSchema>**/KenexaXMLConfiguration.xsd... 
... 
</plugin> 
<plugin> 
    <groupId>com.sun.tools.xjc.maven2</groupId> 
... 
<includeSchema>**/TalentQXMLConfiguration.xsd... 
... 
</plugin> 
+0

Wenn ich diese in andere Plugins trennen nur die letzte ausgeführt wird, zuerst nicht, und mein Code kompiliert nicht. Und wo sollte ich dieses hinzufügen? Es ist kein solches Element verfügbar. –

11

Für Menschen kommen in dieser Frage wie ich, ein Jahr später:/

Das Problem weiterhin besteht in Maven-jaxb2-Plugin als gut, es ist wahrscheinlich eine Art des Fehlers in 0.8.3. Wenn Sie die Dateien im selben Verzeichnis erzeugen, "denkt" das Plugin, dass die Dateien bereits erzeugt wurden und überspringt diese zweite Ausführung.

fand ich, dass die zweite Ausführung zu erzeugen, um das Argument

<forceRegenerate>true</forceRegenerate> 

Im Konfigurationsbereich einstellen müssen.

1

Ich benutze Jaxb2, während immer noch das Problem ankam, als ich hier ankam. Ich habe das folgende Stück in config von anderen Leuten Antworten hinzugefügt und es funktioniert jetzt. Bei früheren Antworten den Teil, der Trick sein sollte:

<generateDirectory>${project.build.directory}/generated-sources/kenexa</generateDirectory> 

auch eine einzigartige Ausführung ID

<id>GenerateKenexa</id> 

Aber verschiedene Verzeichnisse machen benötigt wird, den Code in zwei Top-Level-Pakete liegt, so zuletzt Ich verwende:

<forceRegenerate>true</forceRegenerate> 
+0

Wenn Sie separate Verzeichnisse verwenden, sollten Sie nicht mehr benötigen, zumindest nicht mit der Version 0.12.1 des Plugins. – JSamir

Verwandte Themen