2011-12-13 18 views
7

cuando trato de usar maven-jaxb-schemagen-plugin con Java 7¿Es posible hacer que maven-jaxb-schemagen-plugin trabaje con Java 7?

<groupId>com.sun.tools.jxc.maven2</groupId> 
<artifactId>maven-jaxb-schemagen-plugin</artifactId> 
<version>1.2</version> 

consigo un error:

[ERROR] Failed to execute goal com.sun.tools.jxc.maven2:maven-jaxb-schemagen-plugin:1.2:generate (default) on project TopologyProvisionerDom: Execution default of goal com.sun.tools.jxc.maven2:maven-jaxb-schemagen-plugin:1.2:generate failed: A required class was missing while executing com.sun.tools.jxc.maven2:maven-jaxb-schemagen-plugin:1.2:generate: com/sun/mirror/apt/AnnotationProcessorFactory 

Parece que el AnnotationProcessorFactory está siendo eliminado/desaprobado en Java 7? ¿Es posible obtener jaxb schemagen para que funcione con este complemento? ¿Existe un enfoque alternativo para obtener la generación de esquema a partir del código fuente de JAXB cuando se utiliza JDK 7?

Respuesta

9

¿Ha intentado usar el org.codehaus.mojo:jaxb2-maven-plugin en su lugar?

+2

Así que este complemento parece funcionar. Una desventaja es que no parece posible nombrar los archivos de esquema de salida utilizando este complemento, así que tuve que recurrir al uso del complemento maven-antrun para renombrar el archivo de esquema. También recibo una advertencia de advertencia: la herramienta apt y su API asociada están planeadas para ser eliminadas en la próxima versión importante de JDK. - Espero que este lío sea resuelto antes de java 8 – lexicalscope

+1

Puede proporcionar los archivos de esquema de salida utilizando y keiki

7

Esto es cómo funciona (añadir este perfil a su pom.xml):

<profile> 
    <id>jdk7-fix</id> 
    <activation> 
     <file><exists>${java.home}/../lib/tools.jar</exists></file> 
    </activation> 
    <build> 
     <pluginManagement> 
      <plugins> 
       <plugin> 
        <groupId>com.sun.tools.jxc.maven2</groupId> 
        <artifactId>maven-jaxb-schemagen-plugin</artifactId> 
        <dependencies> 
         <dependency> 
          <groupId>com.sun</groupId> 
          <artifactId>tools</artifactId> 
          <version>1.7</version> 
          <scope>system</scope> 
          <systemPath>${java.home}/../lib/tools.jar</systemPath> 
         </dependency> 
        </dependencies> 
       </plugin> 
      </plugins> 
     </pluginManagement> 
    </build> 
</profile> 
+0

esto parece una solución para mí, ¿tiene una descripción para su solución? Gracias –

0

No estoy seguro de que nadie está escuchando a este hilo más, pero, lo que la hey ...

he utilizado la transformSchemas opción, por ejemplo

<transformSchemas> 
    <transformSchema> 
     <uri>YOUR NS IN YOUR GENERATED SCHEMA FILE</uri> 
     <toFile>DESIRED NAME OF YOUR XSD FILE</toFile> 
    </transformSchema> 
</transformSchemas> 

aplausos

-m.

Cuestiones relacionadas