2011-11-24 8 views
44

Tengo varios proyectos Maven que tienen alguna funcionalidad común o al menos configuraciones/dependencias comunes. Extraje esto en un pom.xml común, y luego modularé varias facetas, por ejemplo, persistencia, dependencias relacionadas con Spring, etc., todas en sus propios módulos que heredan de este POM principal.M2E: La versión está duplicada de la versión principal. ¿Por qué es esto una advertencia?

En este momento, "Common" es la versión 1.0.0 y tengo "ProjectA" que deseo heredar de ella. Recibo el aviso:

versión es la versión duplicada de los padres

No entiendo del todo por qué esto es una advertencia. Pensé que tenía la opción de omitir la versión de mi proyecto POM para heredar la versión. (Hago esto para módulos comunes; por ejemplo, common-spring agrega dependencias comunes adicionales para aplicaciones Spring y, de hecho, ProjectA realmente hereda de common-spring.)

¿No es solo eso, una opción? Si cambio mi versión de ProjectA a 1.0.1 o 2.0.0 todo está bien.

+0

Por lo que vale la pena, estoy cuidado de sólo heredarán de POMs y dependo de JAR. Declaro una propiedad common.version que se usa en dependencyManagement, de modo que ProjectA puede heredar de common-spring (que hereda de common) y depende de common-io (que también hereda de common) y todas tienen la misma versión. –

+0

¿Es esta advertencia particular emitida por m2eclipse o por Maven? (Puede verificar en la línea de comandos con 'mvn verify' -probablemente- si Maven emite algo así o no). Aparte de esto, sería muy útil si pudiera publicar los archivos' pom.xml' en cuestión. Es difícil visualizar lo que está sucediendo en su configuración. –

+0

Eso es justo. Haré esto el miércoles porque estoy de vacaciones (¡sin embargo, no hay vacaciones de SO!). Estoy bastante seguro de que es una advertencia m2e. –

Respuesta

51

Intenta ser inteligente porque el elemento de versión (como ID de grupo) a veces puede ser redundante y puede heredarse del POM principal, por lo que sería seguro eliminar este elemento de su POM hijo.

Pero a veces esto no es una información redundante, como cuando el proyecto principal y el proyecto hijo tienen diferentes ciclos de vida, y m2e debería permitir que esta advertencia se deshabilite. Desafortunadamente, no hay manera de hacer esto sin embargo: http://dev.eclipse.org/mhonarc/lists/m2e-users/msg01961.html

ACTUALIZACIÓN: Como Duncan dice abajo, en las últimas versiones se puede desactivar esta advertencia.

2

Si realmente le molesta, utilizar una propiedad para suprimir el aviso con un poco de astucia prestidigitación de la mano:

<version>${api.version}</version> 
<properties> 
    <api.version>0.0.1-SNAPSHOT</api.version> 
</properties> 

pero todo lo que realmente va a hacer es trasladar el aviso a la salida de la consola:

[WARNING] Some problems were encountered while building the effective model for [project] 
[WARNING] 'version' contains an expression but should be a constant. 
52

Las versiones más nuevas de m2e (desde 1.1) ahora le permiten desactivar esta advertencia.

Preferencias> Maven> Avisos> Desactivar "versión está duplicado de la versión de los padres", y advirtió

original informe de error: https://bugs.eclipse.org/bugs/show_bug.cgi?id=356796

+2

+1 puedes marcarlo en las preferencias, pero tendrás que hacer Proyecto> Maven> Actualizar proyecto ... para que desaparezcan – slf

+0

@slf En las últimas versiones de Eclipse, tan pronto como cambies Los ajustes ** Errores/Advertencias ** de Maven en las preferencias y hacen clic en "Aplicar", aparecerá una ventana emergente que le ofrece la posibilidad de actualizar los proyectos ahora. – informatik01

Cuestiones relacionadas