run - maven para eclipse oxygen
¿Cómo eliminar el "maven-enforcer-plugin(goal" enforce ") es ignorado por m2e" warning by eclipse? (6)
Estoy configurando un proyecto principal maven de múltiples módulos utilizando maven y eclipse m2e, estoy usando las últimas novedades de eclipse Juno SR1 que es m2e 1.2.0
el padre pom utiliza el complemento de enforcer, por lo que el padre pom.xml tiene lo siguiente en su sección de complemento
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>1.1.1</version>
<executions>
<!-- Enforce that all versions of a transative dependency must converge. -->
<execution>
<id>enforce</id>
<configuration>
<rules>
<DependencyConvergence />
</rules>
</configuration>
<goals>
<goal>enforce</goal>
</goals>
</execution>
<!-- Black list certain jars -->
<execution>
<id>enforce-banned-dependencies</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<bannedDependencies>
<excludes>
<exclude>
commons-logging:commons-logging
</exclude>
</excludes>
</bannedDependencies>
</rules>
<fail>true</fail>
</configuration>
</execution>
</executions>
</plugin>
Cada uno de los proyectos secundarios tiene un mensaje de error que dice que maven-enforcer-plugin (goal "enforce") is ignored by m2e.
- ¿Cuál es el significado de este mensaje?
- ¿Cómo configuro cosas para deshacerme de este mensaje?
- ¿Necesito configurar las configuraciones del proyecto eclipse o las configuraciones pom.xml?
¿Cómo eliminar el "maven-enforcer-plugin (goal" enforce ") es ignorado por m2e" warning by eclipse?
Aunque el plugin de lifecycle-mapping
eclipse me ha funcionado en otros proyectos, actualmente estoy trabajando en una tienda IntelliJ con mi Eclipse encubierto y no quiero exponerme cambiando todos sus archivos pom para incluir cualquier cosa de org.eclipse.m2e
grupal org.eclipse.m2e
.
Después de algunos experimentos, descubrí que puede hacer que esta advertencia no se muestre cambiando las asignaciones de Lifecycle en las preferencias de Maven. Francamente, no estoy 100% seguro de lo que está haciendo, pero no he visto ningún efecto secundario, así que ...
Vaya a: Preferencias → Maven → Mapeo del ciclo de vida. Al hacer clic en Open workspace lifecycle mappings metadata
lifecycle-mapping-metadata.xml
del lifecycle-mapping-metadata.xml
Open workspace lifecycle mappings metadata
se abrirá el archivo lifecycle-mapping-metadata.xml
en una pestaña en segundo plano. Supongo que esto corresponde al siguiente archivo debajo de su subdir del espacio de trabajo:
.metadata/.plugins/org.eclipse.m2e.core/lifecycle-mapping-metadata.xml
A continuación, agregue la siguiente estrofa en la parte inferior del archivo dentro de <pluginExecutions>...</pluginExecutions>
.
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<versionRange>[1.0.0,)</versionRange>
<goals>
<goal>enforce</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
Una vez que se haya guardado el archivo XML, deberá volver a la ventana de preferencias y pulsar Reload workspace lifecycle mappings metadata
que compila el archivo de alguna manera. Finalmente, tendrá que hacer un proyecto de actualización maven en todos sus proyectos para ver que las advertencias desaparezcan.
Espero que esto ayude.
Desde m2e versión 1.4 y superior: puede integrar la configuración de ciclo de vida necesaria dentro de pom (parent-pom o project-pom) o puede integrar las informaciones en la configuración global de m2e dentro de eclipse. También tiene algunas acciones quickfix para aplicar estos cambios.
La última opción es buscar conectores m2e o cambiar a versiones más nuevas de diferentes plugins maven con soporte m2e integrado (por ejemplo, para jaxb-plugins).
Aquí (para enforcer-plugin), creo que la definición en el pom es la forma más fácil.
Ver también: https://www.eclipse.org/m2e/documentation/m2e-execution-not-covered.html
El plugin eclipse maven ejecuta un archivo pom.xml de proyectos para averiguar cómo se configura el proyecto maven y traducir la configuración de maven pom.xml en una configuración de eclipse. Un pom.xml puede hacer referencia a una cantidad arbitraria de complementos Maven y cada uno de esos complementos tiene el potencial de perder memoria o hacer cosas que son dañinas para eclipsar. Por lo tanto, de forma predeterminada, el plugin m2e eclipse ignora cualquier plugin maven a menos que esos plugins maven tengan un conector de plugin m2e especial que le indique a m2e cómo integrar el plugin maven en eclipse. En resumen, m2e está defendiendo el proceso de JVM de eclipse contra un plugin maven plugin, diciendo que para cada plugin de maven debe haber un conector m2e para tender un puente entre maven y eclipse.
Entonces, para deshacerme de la advertencia, agregué lo siguiente a mi sección de administración de complementos del archivo pom.xml principal.
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<versionRange>[1.0.0,)</versionRange>
<goals>
<goal>enforce</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
Parece que org.eclipse.m2e:lifecycle-mapping
es un plugin maven diseñado para contener metadatos para comunicarse con el plugin eclipse m2e cuando procesa un maven pom.xml y esta información se usa para contarle a eclipse qué hacer con los plugins maven que son definido en pom.xml cuando eclipse ejecuta el pom.xml como parte de la UI del eclipse.
Existe otro inconveniente al tener varios pluginExecutionFilters. ¡Deben estar en el lugar correcto en el pom.xml! Para mí fue desagradable encontrarlo ya que no existían errores ni advertencias sobre el desplazamiento.
Este es el código correcto para tener varios pluginExecutionFilters:
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<versionRange>[1.0.0,)</versionRange>
<goals>
<goal>enforce</goal>
</goals>
</pluginExecutionFilter>
<action><ignore/></action>
</pluginExecution>
<!-- now here follows the new filter -->
<pluginExecution>
<pluginExecutionFilter>
<groupId>com.googlecode.maven-java-formatter-plugin</groupId>
...
Para mí fue un problema similar
Tenía maven 3.0.3 y java 1.5
y mi pom tenía
<executions>
<execution>
<id>enforce-versions</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireMavenVersion>
<version>[3.0.3,2.2.1,)</version>
</requireMavenVersion>
<requireJavaVersion>
<version>[1.7, 1.8)</version>
</requireJavaVersion>
</rules>
</configuration>
</execution>
</executions>
</plugin>
Como pueden ver, realmente no cumplí con las reglas, por lo tanto, actualicé Java y me puse en funcionamiento y todo estaba listo. Espero que esto ayude a alguien.
Solo un FYI para aquellos de ustedes que tienen un problema con la configuración de su IDE en su modelo de construcción. Esté atento a esta solicitud de mejora actualmente seleccionada para la versión de Kepler:
Error 350414: Almacenar conectores m2e ignorados fuera del proyecto pom.xml https://bugs.eclipse.org/bugs/show_bug.cgi?id=350414