Je suis en train de configurer un projet maven parent-multi-module à l'aide de maven et d'Eclipse m2e. J'utilise les dernières nouveautés d'Eclipse Juno SR1, m2e 1.2.0.
le pom parent utilise le plug-in forcer; le pom.xml parent a donc les éléments suivants dans sa section plugin
<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>
Chaque projet enfant a un message d'erreur disant maven-enforcer-plugin (goal "enforce") is ignored by m2e.
Le plug-in Eclipse maven exécute un fichier de projets pom.xml afin de déterminer comment le projet maven est configuré et de traduire la configuration maven pom.xml en une configuration Eclipse. Un fichier pom.xml peut référencer un nombre arbitraire de plug-ins maven et chacun de ces plug-ins risque de fuir de la mémoire ou de faire des choses néfastes pour Eclipse. Ainsi, par défaut, le plug-in m2e Eclipse ignore les plug-ins maven, à moins que ceux-ci ne disposent d'un connecteur spécial pour le plug-in m2e qui indique à m2e comment intégrer le plug-in maven dans Eclipse. En résumé, M2E défend le processus JVM Eclipse contre un plugin buggy maven, en disant que pour chaque plugin maven, il doit exister un connecteur M2E permettant de relier maven à Eclipse.
Donc, pour me débarrasser de l'avertissement, j'ai ajouté ce qui suit à ma section de gestion des plug-ins du parent pom.xml
<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>
Il semble que org.Eclipse.m2e:lifecycle-mapping
soit un plug-in maven conçu pour contenir des métadonnées afin de communiquer avec le plug-in Eclipse m2e lorsqu'il traite un fichier pav.xml maven. pom.xml dans l'interface utilisateur Eclipse.
A partir de la version 1.4 de m2e: Vous pouvez intégrer la configuration de cycle de vie nécessaire dans le pom (parent-pom ou project-pom) ou les informations dans la configuration globale de m2e dans Eclipse . avoir des actions rapides pour appliquer ces changements.
La dernière option consiste à rechercher des connecteurs M2E ou à basculer vers des versions plus récentes de différents plug-ins Maven avec prise en charge de M2E intégrée (par exemple pour les plug-ins Jaxb).
Ici (pour forcer-plugin) je pense, la définition dans le pom est le moyen le plus simple.
Voir aussi: https://www.Eclipse.org/m2e/documentation/m2e-execution-not-covered.html
Juste un FYI pour ceux d’entre vous qui ont un problème avec la configuration de votre IDE dans votre modèle de construction. Gardez un œil sur cette demande d'amélioration actuellement ciblée pour la version Kepler:
Bug 350414: Stocke les connecteurs M2E ignorés en dehors du projet pom.xmlhttps://bugs.Eclipse.org/bugs/show_bug.cgi?id=350414
Comment éliminer le «maven -forcer-plugin» (objectif «appliquer») est ignoré par l'avertissement m2e »par eclipse?
Bien que le plug-in Eclipse lifecycle-mapping
ait fonctionné pour moi sur d'autres projets, je travaille actuellement dans un magasin IntelliJ avec Eclipse et je ne souhaite pas m'exposer en modifiant tous leurs fichiers pom pour inclure quelque chose du groupe org.Eclipse.m2e
.
Après quelques expérimentations, j'ai constaté que vous pouvez empêcher cet avertissement de s'afficher en modifiant les mappages de cycle de vie dans les préférences Maven. Franchement, je ne suis pas sûr à 100% de ce que cela fait, mais je n'ai vu aucun effet secondaire, alors ...
Cliquez sur Open workspace lifecycle mappings metadata
pour ouvrir le fichier lifecycle-mapping-metadata.xml
dans un onglet en arrière-plan. Je suppose que cela correspond au fichier suivant sous votre sous-espace de travail:
.metadata/.plugins/org.Eclipse.m2e.core/lifecycle-mapping-metadata.xml
Ajoutez ensuite la strophe suivante au bas du fichier à l'intérieur 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>
Une fois le fichier XML sauvegardé, vous devrez revenir à la fenêtre des préférences et appuyer sur Reload workspace lifecycle mappings metadata
pour le compiler.
J'espère que cela t'aides.
Pour moi c'était le même problème
J'avais maven 3.0.3 et Java 1.5
et mon pom avait
<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>
Comme vous pouvez le constater, je n’ai pas vraiment respecté les règles; c’est pourquoi j’ai mis à jour Java et que j’ai mvn commencer et j’étais prêt. J'espère que ça aide quelqu'un.
Un autre piège existe lorsque plusieurs pluginExecutionFilters sont installés. Ceux-ci doivent être au bon endroit dans le fichier pom.xml! Pour moi, c'était génial de constater qu'aucune erreur ni aucun avertissement du déplacement n'existait.
C'est le bon code pour avoir plusieurs 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>
...