47 votes

Comment éliminer le "maven -forcer-plug-in" (objectif "enforce") est ignoré par m2e "averti par eclipse?

Je suis à la configuration d'un multi-module parent-enfant de projet maven à l'aide de maven et eclipse m2e, je suis en utilisant les dernières choses à partir d'eclipse Juno SR1 qui est m2e 1.2.0

le pom parent utilise l'enforcer plugin, de sorte que le parent pom.xml a la suit 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>

Chacun des projets enfants a un message d'erreur indiquant maven-enforcer-plugin (goal "enforce") is ignored by m2e.

  • Quel est le sens de ce message?
  • Comment puis-je configurer choses à vous débarrasser de ce message?
  • dois-je configurer le projet eclipse paramètres ou l'pom.xml les paramètres?

56voto

ams Points 9588

L'eclipse plugin maven gère un des projets pom.xml fichier afin de comprendre comment le projet maven est configuré et traduire le maven pom.xml la configuration d'une éclipse de configuration. Un pom.xml peut faire référence à un nombre arbitraire de plugins maven et chacun de ces plugins, a le potentiel de fuite de mémoire, ou de faire des choses qui sont nuisibles à eclipse. Donc par défaut la m2e plugin eclipse ignore les plugins maven, à moins que ces plugins maven ont une m2e plugin connecteur qui raconte m2e comment intégrer le plugin maven dans eclipse. En résumé m2e est la défense de l'éclipse processus de JVM à l'encontre d'un buggy plugin maven, en disant que pour chaque plugin maven, il faut une m2e connecteur de pont entre maven et eclipse.

Donc, pour se débarrasser de l'avertissement, j'ai ajouté ce qui suit à mon plugin section de la gestion de la société mère 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 qu' org.eclipse.m2e:lifecycle-mappingest un plugin maven conçue pour contenir des méta-données pour communiquer avec eclipse m2e plugin lorsqu'il traite une maven pom.xml et cette information est utilisé pour indiquer à eclipse quoi faire avec maven plugins qui sont définis dans pom.xml lors de l'éclipse exécute le pom.xml dans le cadre de l'INTERFACE utilisateur d'eclipse.

4voto

afischer Points 11

De m2e la version 1.4 et supérieur: Vous pouvez intégrer la nécessaire du cycle de vie de configuration dans le pom (parent-pom ou d'un projet-pom) ou vous pouvez intégrer les informations dans le global m2e de configuration au sein d'eclipse. Aussi, vous avez quelques quickfix-actions pour l'application de cette modification.

La dernière option est de chercher les m2e-connecteurs ou de passer à des versions plus récentes des différents maven-plugin intégré m2e de soutien (par exemple, pour jaxb-plugins).

Ici (pour enforcer-plugin) je pense, la définition dans le pom est le moyen le plus facile.

Voir aussi: http://wiki.eclipse.org/M2E_plugin_execution_not_covered

2voto

rmp Points 61

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:

Bogue 350414: Stockage des connecteurs M2E ignorés en dehors du projet pom.xml https://bugs.eclipse.org/bugs/show_bug.cgi?id=350414

0voto

tosha Shah Points 488

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.

0voto

smön Points 38

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>
                        ...
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X