Comment éliminer les "maven-enforcer-plugin (objectif de "faire respecter") est ignoré par m2e" alerte par eclipse?

je configure un projet parent child maven multi-module en utilisant maven et eclipse m2e, j'utilise la dernière version D'eclipse Juno SR1 qui est m2e 1.2.0

le POM parent utilise le plugin enforcer, donc le pom parent.xml a ce qui 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>

chaque projet enfant a un message d'erreur disant maven-enforcer-plugin (goal "enforce") is ignored by m2e.

  • Quelle est la signification de ce message?
  • comment configurer les choses pour se débarrasser de ce message?
  • est-ce que je dois configurer les paramètres du projet eclipse ou le pom.paramètres xml?
42
demandé sur Gray 2012-10-24 03:20:03

6 réponses

le plugin eclipse maven exécute un project pom.fichier xml afin de comprendre comment le projet maven est configuré et traduire les pom maven.configuration xml dans une configuration eclipse. POM.xml peut référencer 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 le plugin M2E eclipse ignore tous les plugins maven à moins que ces plugins maven aient un connecteur M2E spécial qui indique m2e comment intégrer le plugin maven dans eclipse. En résumé, m2e défend le processus JVM d'eclipse contre un plugin buggy maven, en disant que pour chaque plugin maven il doit y avoir un connecteur m2e pour faire le pont entre maven et eclipse.

donc pour se débarrasser de l'avertissement j'ai ajouté ce qui suit à ma section de gestion de plugin de la pom mère.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-mappingest un plugin maven conçu pour contenir des métadonnées pour communiquer avec eclipse m2e plugin quand il traite un pom maven.xml et cette information est utilisée pour dire à eclipse ce que faire avec les plugins maven qui sont définis dans pom.xml quand eclipse exécute le pom.xml dans le cadre de l'interface utilisateur eclipse.

53
répondu ams 2013-02-04 10:31:22

à Partir de m2e version 1.4 et supérieur: Vous pouvez intégrer la configuration-cycle de vie nécessaire dans la pom (parent-pom ou project-pom) ou vous pouvez intégrer les informations dans la configuration-M2E globale dans eclipse. Vous avez aussi quelques actions quickfix pour appliquer ces changements.

la dernière option est de rechercher des connecteurs m2e ou de passer à des versions plus récentes de différents plugins maven avec support m2e intégré (par exemple pour les plugins jaxb).

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

Voir aussi: https://www.eclipse.org/m2e/documentation/m2e-execution-not-covered.html

4
répondu afischer 2015-12-18 14:22:13

juste un renseignement 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 ciblées pour le Kepler de presse:

bogue 350414: stocker les connecteurs M2E ignorés à l'extérieur du projet pom.xml https://bugs.eclipse.org/bugs/show_bug.cgi?id=350414

2
répondu rmp 2012-12-20 18:40:47

Pour moi, c'était même problème

j'avais maven 3.0.3 et java 1.5

et mon pom 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>

comme vous pouvez le voir, je n'ai pas vraiment rencontré les règles, donc J'ai mis à jour Java et j'ai lancé mvn et j'étais prêt. Espérons que cela aide quelqu'un.

0
répondu tosha Shah 2013-06-05 17:45:59

un autre piège existe lorsqu'on a plusieurs filtres de pluginexécution. Ça doit être au bon endroit dans la pom.xml! Pour moi, il était ardu de trouver aucune erreur ou avertissement du déplacement existé.

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>
                        ...
0
répondu smön 2013-09-11 16:38:51

Comment éliminer les "maven-enforcer-plugin (objectif de "faire respecter") est ignoré par m2e" alerte par eclipse?

Bien que l'éclipse lifecycle-mapping plugin a travaillé pour moi sur d'autres projets, je travaille actuellement dans une boutique IntelliJ avec mon Covert Eclipse et je ne veux pas m'exposer en changeant tous leurs fichiers pom pour inclure quoi que ce soit du groupe org.eclipse.m2e.

Après quelques essais, j'ai trouvé que vous pouvez obtenir cet avertissement de ne pas montrer en changeant le Cycle de vie des Mappages dans le Maven préférences. Franchement, je ne suis pas sûr à 100% de ce que ça fait, mais je n'ai pas vu d'effets secondaires...

  1. Dans Eclipse, allez à: Préférences et rightarrow; Maven → Cycle de vie des Mappages.
  2. en Cliquant sur Open workspace lifecycle mappings metadata qui ouvrira le lifecycle-mapping-metadata.xml fichier dans un onglet à l'arrière-plan. Je suppose que ceci correspond au fichier suivant dans votre espace de travail subdir:

    .metadata/.plugins/org.eclipse.m2e.core/lifecycle-mapping-metadata.xml
    
  3. ajouter 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>
    
  4. une fois le fichier XML sauvegardé, vous devrez revenir à la fenêtre des préférences et appuyer sur Reload workspace lifecycle mappings metadata qui compile le fichier en quelque sorte.

  5. enfin, vous aurez besoin de faire un Maven update-project sur tous vos projets pour voir les Avertissements disparaître.

J'espère que cela vous aidera.

0
répondu Gray 2018-07-25 20:22:09