2012-08-31 8 views
5

Estoy intentando generar fuentes a partir de dos esquemas XSD. Mi JAXB experto complemento se ve así:Complemento Maven JAXB ejecutando solo una ejecución

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

La primera de ellas se genera bien. Pero el segundo no. Veo en la salida 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 

Dice que los archivos están actualizados, pero ni siquiera se generan. ¿Qué podría estar mal?

Respuesta

4

He resuelto el problema . He cambiado el plugin maven jaxb al plugin maven jaxb2 y ahora todo funciona. Ahora la configuración de mi experto ve así:

<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

Gracias. Mismo problema, misma solución. –

1

En primer lugar, yo recomendaría para especificar las carpetas de salida separados para cada xsd <outputdirectory>${basedir}/target/generated-sources/xjc</outputdirectory>

Y en segundo lugar, trato de configurarlo como entradas de plugins separados, no hay ejecuciones separadas:

<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

Si los separé en diferentes complementos, solo el último se ejecuta, el primero no y mi código no se compila. ¿Y dónde debería agregar este ? No hay tal elemento disponible. –

11

Para las personas que llegan a esta pregunta como lo hice, un año más tarde:/

El problema persiste en aswell experto-jaxb2-plugin, es probable que sea una especie de error en 0.8.3. Cuando genera los archivos en el mismo directorio, el complemento "piensa" que los archivos ya se han generado y omite esa segunda ejecución.

me encontré con que el fin de generar la segunda ejecución que tendrá que establecer el argumento

<forceRegenerate>true</forceRegenerate> 

En la sección de configuración.

1

Estoy usando jaxb2 mientras todavía estaba enfrentando el problema cuando llegué aquí. Agregué la pieza a continuación en config de otras personas y funciona ahora. Para anterior responde a la parte que hizo el truco debe ser:

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

También se necesita una única ID de ejecución

<id>GenerateKenexa</id> 

Pero diferentes directorios hacen que el código se encuentra en dos paquetes de nivel superior, por lo que en última Estoy usando:

<forceRegenerate>true</forceRegenerate> 
+0

Al usar directorios separados, ya no necesitará , al menos no con la versión 0.12.1 del complemento. – JSamir

Cuestiones relacionadas