2009-05-19 13 views
13

En mi proyecto maven2 tengo un directorio ${basedir}/autogen que contiene algunos archivos de código fuente autogenerados producidos por wsdl2java.error de compilación de maven: clases duplicadas

Al ejecutar mvn compile me sale un error de compilación, debido a clases duplicadas, que vive en ${basedir}/autogen. Esto es verdad. Pero, ¿qué está haciendo la fase de compilación en ${basedir}/autogen? No le he dicho a maven que agregue este directorio como un directorio fuente. Y parece que no hay forma de decirle a maven que ignore el directorio.

+0

@ vpalle ¿puedes enumerar los nombres de clases duplicados? ¿Están engañados de javax. * clases? – sal

+0

Tengo un problema similar Necesito digerir un servicio web wsdl y un esquema xsd. Ninguno de los dos tiene todo lo que necesito, pero en la superposición hay dups que luego arrojan errores de clase de duplicación en la compilación. – Adam

Respuesta

0

Es difícil cambiar el comportamiento por defecto experto, creo que es mejor ir con él - se puede generar esos archivos con Maven wsdl2java-maven-plugin

+0

Los estoy generando con un plugin maven. – vpalle

4

que he visto unas cuantas veces. En casi todos los casos, se debe a que las clases generadas se agregan al árbol src principal y luego se controlan en el control de la versión.

+1

Entonces, quitarlos del control de versiones nuevamente, ¿podría resolverlo? – vpalle

+0

En primer lugar, no se agregaron al control de versiones, solo se marcó, así que supongo que ese no es el problema ... – vpalle

+0

Este modelo es muy, muy útil. Gracias Señor. Verifique si los cambios de configuración local no producen clases en la carpeta principal. Entonces no (y probablemente no) se pondrá en el control de la versión porque nadie quiere comprometer el código que no funciona. – kboom

1

Tuve un problema similar con el generador de modelos JPA. Se le ocurrió en esta dependencia:

<dependency> 
    <groupId>org.eclipse.persistence</groupId> 
    <artifactId>org.eclipse.persistence.jpa.modelgen</artifactId> 
    <version>2.1.1</version> 
</dependency> 

I añadió erróneamente el alcance = proporcionado y que resultó en:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.1:compile (default-compile) on project mocker: Compilation failure: Compilation failure: 
[ERROR] \Projects\entity\MockVehicle_.java:[10,7] duplicate class: entity.MockVehicle_ 
22

I tenían el mismo problema cuando se utiliza el maven-procesador-plugin y se encontró que la solución fue para configurar el plugin maven-compilador de la siguiente manera:

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.1</version> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
       <compilerArgument>-proc:none</compilerArgument> 
      </configuration> 
     </plugin> 

-proc: ninguno significa que la compilación se lleva a cabo sin el proceso de anotación y por lo tanto no hay clases duplicados (que son typic aliado generado en la fase generar-fuentes)

Espero que ayude.

+2

La documentación del generador de metamodelos estáticos JPA de Hibernate indica que puede usar la solución provista anteriormente en combinación con el complemento maven-processor si desea controlar la ejecución del procesador – dSebastien

+1

¡Excelente respuesta! Resolvió mis problemas con [MapStruct] (http://mapstruct.org). –

+0

No sirvió de nada, mi archivo JAR aún contiene archivos de clase duplicados. –

-2

puedo solucionar el mismo problema

  1. cleaning maven project :- mvn clean
  2. delete com folder from src then compile
  3. copy com from generated to src->main-->java
  4. again compile

Espero que esta ayuda ..

1

resuelvo por eliminar generateAsync de mi pom.xml el complemento de la GWT se verá como

   <groupId>org.codehaus.mojo</groupId> 
       <artifactId>gwt-maven-plugin</artifactId> 
       <version>${gwtVersion}</version> 
       <executions> 
        <execution> 
         <goals> 
          <goal>compile</goal> 
          <goal>test</goal> 
          <!-- <goal>i18n</goal> --> 

         </goals> 
        </execution> 
       </executions> 
+0

La línea eliminada está por debajo de generateAsync

+0

esto funcionó para mí (Maven, GWT, requestfactory build) –

Cuestiones relacionadas