2012-08-31 13 views
5

Próbuję generować źródła z dwóch schematów XSD. Moja JAXB Maven plugin wygląda następująco:Wtyczka Maven JAXB wykonująca tylko jedno wykrywanie

<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> 

Pierwszy z nich zostanie wygenerowany w porządku. Ale drugi nie. Widzę na wyjściu maven:

[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 

Mówi, że pliki są aktualne, ale nie są one jeszcze wygenerowane. Co może być nie tak?

Odpowiedz

4

I rozwiązać problem . Zmieniono wtyczkę maven jaxb na wtyczkę maven jaxb2 i teraz wszystko działa. Teraz moja konfiguracja Maven wygląda następująco:

<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

Dzięki. Ten sam problem, to samo rozwiązanie. –

1

Po pierwsze, chciałbym polecić określić oddzielne foldery wyjściowych dla każdego xsd <outputdirectory>${basedir}/target/generated-sources/xjc</outputdirectory>

A po drugie, spróbuj ustawić go jako osobne wpisy wtyczki ma oddzielnych wykonaniach:

<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

Jeśli rozdzielę je na różne wtyczki, tylko ostatni zostanie wykonany, pierwszy nie, a mój kod nie zostanie skompilowany. I gdzie powinienem dodać ten ? Nie ma takiego elementu dostępnego. –

11

Dla osób przyjeżdżających na to pytanie, jak ja, a rok później:/

problem nie ustąpi w Maven-jaxb2-plugin aswell, to chyba jakaś błędu w wersji 0.8.3. Po wygenerowaniu plików w tym samym katalogu wtyczka "myśli", że pliki zostały już wygenerowane i pomija to drugie wykonanie.

Okazało się, że w celu wygenerowania drugiego wykonanie będzie trzeba ustawić argument

<forceRegenerate>true</forceRegenerate> 

w sekcji konfiguracji.

1

Używam jaxb2, gdy wciąż miałem do czynienia z problemem, kiedy dotarłem tutaj. Dodałem poniższy fragment do konfiguracji z innych odpowiedzi i teraz działa. za poprzednie odpowiedzi część, która załatwiło sprawę powinno być:

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

także unikatowy identyfikator wykonanie jest potrzebne

<id>GenerateKenexa</id> 

Ale różne katalogi uczynić kod leży na dwóch pakietów najwyższym poziomie, więc w końcu Używam:

<forceRegenerate>true</forceRegenerate> 
+0

Podczas korzystania z oddzielnych katalogów nie powinno już być potrzebne , przynajmniej nie w wersji 0.12.1 wtyczki. – JSamir

Powiązane problemy