web-dev-qa-db-fra.com

Exécution de plug-in non couverte par la configuration du cycle de vie (archétype de EAR JBossas 7)

J'utilise Eclipse 3.7 Indigo avec Maven M2E Plugin 1.0.100.

En utilisant l'archétype JBoss 7.x JavaEE 6 EAR, le pom pour EAR me donne cette erreur:

Exécution du plugin non couverte par la configuration du cycle de vie: org.Apache.maven.plugins: maven-ear-plugin: 2.6: generate-application-xml (exécution: default-generate-application-xml, phase: generate-resources)

<plugin>
   <groupId>org.Apache.maven.plugins</groupId>
   <artifactId>maven-ear-plugin</artifactId>
   <version>2.6</version>
   <configuration>
      <!-- Tell Maven we are using Java EE 6 -->
      <version>6</version>
      <!-- Use Java EE ear libraries as needed. Java EE ear libraries 
                  are in easy way to package any libraries needed in the ear, and automatically 
                  have any modules (EJB-JARs and WARs) use them -->
      <defaultLibBundleDir>lib</defaultLibBundleDir>
      <modules></modules>
   </configuration>
<plugin>
123
Oh Chin Boon

C'est une "fonctionnalité" du plugin M2E qui avait été introduite il y a longtemps. Ce n'est pas directement lié au plugin JBoss EAR, mais se produit également avec la plupart des autres plugins Maven.

Si vous avez une exécution de plug-in définie dans votre pom (comme l'exécution de maven-ear-plugin:generate-application-xml), vous devez également ajouter des informations de configuration supplémentaires pour M2E, indiquant à M2E ce qu'il faut faire lorsque la construction est exécutée dans Eclipse. par exemple si l'exécution du plug-in est ignorée ou exécutée par M2E, doit-elle également être effectuée pour les constructions incrémentielles, ... Si cette information est manquante, M2E s'en plaint en affichant le message d'erreur suivant:

"Exécution de plugin non couverte par la configuration du cycle de vie"

Voir ici pour une explication plus détaillée et quelques exemples de configuration qui doivent être ajoutés au pom pour que cette erreur disparaisse:

https://www.Eclipse.org/m2e/documentation/m2e-execution-not-covered.html

137
Jan

de toute façon il est trop tard, mais ma solution était simple: faites un clic droit sur le message d'erreur dans Eclipse et choisissez Quick Fix >> Ignorer pour chaque message avec de telles erreurs.

43
java_newbie

Eclipse a eu le concept de construction incrémentielle. Ceci est incroyablement utile car il permet de gagner beaucoup de temps.

Comment est-ce utile

Supposons que vous venez de modifier un seul fichier .Java. Les générateurs incrémentiels seront capables de compiler le code sans avoir à tout recompiler (ce qui prendra plus de temps).

Maintenant, quel est le problème avec les plugins Maven

La plupart des plugins Maven ne sont pas conçus pour des versions incrémentielles, ce qui crée des problèmes pour M2E. m2e ne sait pas si l'objectif du plug-in est quelque chose de crucial ou s'il n'est pas pertinent. S'il exécute tous les plugins lorsqu'un seul fichier est modifié, cela prendra beaucoup de temps.

C'est la raison pour laquelle m2e s'appuie sur des métadonnées pour déterminer comment l'exécution doit être traitée. m2e a proposé différentes options pour fournir ces informations de métadonnées et l'ordre de préférence est le suivant (du plus élevé au plus faible)

  1. fichier pom.xml du projet
  2. fichiers parent, grand-parent et ainsi de suite pom.xml
  3. [m2e 1.2+] préférences d'espace de travail
  4. extensions m2e installées
  5. [m2e 1.1+] métadonnées de cartographie du cycle de vie fournies par le plugin maven
  6. métadonnées de cartographie du cycle de vie par défaut fournies avec m2e

1,2 fait référence à la spécification de la section pluginManagement dans la balise de votre fichier pom ou de l’un de ses parents. M2E lit cette configuration pour configurer le projet. Un extrait suivant indique à m2e d'ignorer les objectifs jslint et compress du plug-in yuicompressor-maven-plugin

<pluginManagement>
        <plugins>
            <!--This plugin's configuration is used to store Eclipse m2e settings 
                only. It has no influence on the Maven build itself. -->
            <plugin>
                <groupId>org.Eclipse.m2e</groupId>
                <artifactId>lifecycle-mapping</artifactId>
                <version>1.0.0</version>
                <configuration>
                    <lifecycleMappingMetadata>
                        <pluginExecutions>
                            <pluginExecution>
                                <pluginExecutionFilter>
                                    <groupId>net.alchim31.maven</groupId>
                                    <artifactId>yuicompressor-maven-plugin</artifactId>
                                    <versionRange>[1.0,)</versionRange>
                                    <goals>
                                        <goal>compress</goal>
                                        <goal>jslint</goal>
                                    </goals>
                                </pluginExecutionFilter>
                                <action>
                                    <ignore />
                                </action>
                            </pluginExecution>
                        </pluginExecutions>
                    </lifecycleMappingMetadata>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>

3) Si vous ne préférez pas polluer votre fichier pom avec ces métadonnées, vous pouvez le stocker dans un fichier XML externe (option 3). Vous trouverez ci-dessous un exemple de fichier de mappage qui demande à m2e d'ignorer les objectifs jslint et compress du plug-in yuicompressor-maven-plugin.

<?xml version="1.0" encoding="UTF-8"?>
<lifecycleMappingMetadata>
    <pluginExecutions>
        <pluginExecution>
            <pluginExecutionFilter>
                <groupId>net.alchim31.maven</groupId>
                <artifactId>yuicompressor-maven-plugin</artifactId>
                <versionRange>[1.0,)</versionRange>
                <goals>
                    <goal>compress</goal>
                    <goal>jslint</goal>
                </goals>
            </pluginExecutionFilter>
            <action>
                <ignore/>
            </action>
        </pluginExecution>
    </pluginExecutions>
</lifecycleMappingMetadata>

4) Si vous n'aimez aucune de ces 3 options, vous pouvez utiliser un connecteur m2e (extension) pour le plug-in maven. Le connecteur fournira à son tour les métadonnées à m2e. Vous pouvez voir un exemple des informations de métadonnées dans un connecteur à cette adresse lien . Vous avez peut-être remarqué que les métadonnées font référence à un configurateur. Cela signifie simplement que m2e déléguera la responsabilité à la classe Java fournie par l'auteur de l'extension. Le configurateur peut configurer le projet (par exemple, ajouter des dossiers sources supplémentaires, etc.) et décider d'exécuter le plugin maven actuel. lors d'une construction incrémentielle (si elle n'est pas correctement gérée dans le configurateur, cela peut conduire à des générations de projets sans fin)

Reportez-vous à ces liens pour un exemple de configuration ( link1 , link2 ). Donc, si le plugin est quelque chose qui peut être géré via un connecteur externe, vous pouvez l’installer. m2e tient à jour une liste de ces connecteurs fournis par d'autres développeurs. C'est ce qu'on appelle le catalogue de découverte. m2e vous invitera à installer un connecteur si vous ne disposez pas déjà de métadonnées de mappage de cycle de vie pour l'exécution via l'une des options (1 à 6) et si le catalogue de découverte possède une extension permettant de gérer l'exécution.

L'image ci-dessous montre comment m2e vous invite à installer le connecteur pour le plugin build-helper-maven. install connector suggested from the discovery catalog.

5) m2e encourage les auteurs de plug-ins à prendre en charge la construction incrémentielle et à fournir un mappage de cycle de vie au sein du maven-plugin lui-même. Cela signifie que les utilisateurs n'auront pas à utiliser de mappages ou de connecteurs de cycle de vie supplémentaires. Certains auteurs de plug-in ont déjà implémenté ceci

6) Par défaut, m2e contient les métadonnées de mappage du cycle de vie pour la plupart des plugins couramment utilisés, tels que le plugin maven-compiler-plugin et de nombreux autres.

Revenons maintenant à la question: vous pouvez probablement simplement fournir un mappage de cycle de vie à ignorer en 1, 2 ou 3 pour cet objectif spécifique qui vous crée des problèmes.

29
coderplus

Une bonne solution de contournement pour vous rappeler que m2e pourrait être mieux configuré, sans que le projet hérite d'un marqueur d'erreur faux positif, consiste simplement à rétrograder ces erreurs en avertissements:

Fenêtre -> Préférences -> Maven -> Erreurs/Avertissements -> Exécution de plugins non couverte par la configuration de cycle de vie = Avertissement

14
mgobeil

J'ai essayé d'exécuter le branchement spécifique juste après le nettoyage, c'est-à-dire après le nettoyage (la phase par défaut est la phase de nettoyage). Cela a fonctionné pour moi avec Eclipse Indigo. Vient d’ajouter que post-clean a résolu le problème pour moi.

<executions>
  <execution>
    <configuration>
    </configuration>
   <phase>post-clean</phase>
    <goals>
      <goal>update-widgetset</goal>
    </goals>
  </execution>
</executions> 
12
Charith

J'ai pu résoudre le même problème avec maven-antrun-plugin et jaxb2-maven-plugin dans Eclipse Kepler 4.3 en appliquant cette solution: http://wiki.Eclipse.org/M2E_plugin_execution_not_covered#Eclipse_4.2_add_default_mapping =
Le contenu de mon% elipse_workspace_name% /. Metadata/.plugins/org.Eclipse.m2e.core/lifecycle-mapping-metadata.xml est le suivant:

<?xml version="1.0" encoding="UTF-8"?>
<lifecycleMappingMetadata>
  <pluginExecutions>
    <pluginExecution>
      <pluginExecutionFilter>
        <groupId>org.Apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>
        <versionRange>1.3</versionRange>
        <goals>
          <goal>run</goal>
        </goals>
      </pluginExecutionFilter>
      <action>
        <ignore />
      </action>
    </pluginExecution>
    <pluginExecution>
      <pluginExecutionFilter>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>jaxb2-maven-plugin</artifactId>
        <versionRange>1.2</versionRange>
        <goals>
          <goal>xjc</goal>
        </goals>
      </pluginExecutionFilter>
      <action>
        <ignore />
      </action>
    </pluginExecution>
  </pluginExecutions>
</lifecycleMappingMetadata>

* J'ai dû redémarrer Eclipse pour voir les erreurs disparues.

2
aeros

A compter de Maven Eclipse (m2e) version 0.12, tous les objectifs de cycle de vie Maven doivent correspondre à une extension m2e installée. Dans ce cas, le maven-ear-plugin avait un objectif non mappé default-generate-application-xml.

Vous pouvez exclure les objectifs de cycle de vie non mappés en suivant simplement les instructions ci-dessous:

https://wiki.Eclipse.org/M2E_plugin_execution_not_covered

Vous pouvez également cliquer avec le bouton droit de la souris sur le message d'erreur dans Eclipse et choisir Quick Fix -> Ignore for every pom with such errors.

Vous devez faire attention lorsque vous ignorez les objectifs de cycle de vie: généralement, les objectifs ont une utilité. Si vous les configurez pour être ignorés dans Eclipse, vous risquez de rater des étapes de construction importantes. Vous pouvez également envisager d'ajouter un support à l'extension EAR Maven Eclipse pour l'objectif de cycle de vie non mappé.

1
Ricardo Gladwell

Même si la question est trop ancienne, je voudrais cependant partager la solution qui a fonctionné pour moi car j’ai déjà tout vérifié en ce qui concerne cette erreur. C'était pénible, j'ai passé deux jours à essayer et à la fin, la solution était:

met à jour le plugin M2e dans Eclipse

nettoyer et reconstruire

0
William Kinaan

Avec le mécanisme expliqué dans la réponse de Jan, j’ai demandé au plug-in M2E d’ignorer l’objectif "generate-application-xml". Cela supprime l'erreur et semble fonctionner puisque m2e crée application.xml.

Donc, fondamentalement, l’erreur nous a obligés à décider quel mécanisme est chargé de générer application.xml lorsque la compilation Maven s’exécute dans Eclipse sous le contrôle du plug-in m2e. Et nous avons décidé que M2E est en charge.

<build>
    <plugins>
        <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-ear-plugin</artifactId>
            <version>2.6</version>
            <configuration>
                <version>6</version>
                <defaultLibBundleDir>lib</defaultLibBundleDir>
            </configuration>
        </plugin>
    </plugins>
    <pluginManagement>
        <plugins>
            **<!-- This plugin's configuration is used to store Eclipse m2e settings 
                only. It has no influence on the Maven build itself. -->
            <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-ear-plugin</artifactId>
                                    <versionRange>[2.1,)</versionRange>
                                    <goals>
                                        <goal>generate-application-xml</goal>
                                    </goals>
                                </pluginExecutionFilter>
                                <action>
                                    <ignore></ignore>
                                </action>
                            </pluginExecution>
                        </pluginExecutions>
                    </lifecycleMappingMetadata>
                </configuration>
            </plugin>**
        </plugins>
    </pluginManagement>
</build>
0
StaticNoiseLog

Vous devez comprendre le contenu de M2E_plugin_execution_not_covered et suivre les étapes mentionnées ci-dessous:

  • Sélectionnez le fichier jar org.Eclipse.m2e.lifecyclemapping.defaults dans le dossier du plug-in Eclipse.
  • Extrayez-le et ouvrez lifecycle-mapping-metadata.xml où vous pouvez trouver toutes les exécutions plugin.
  • Ajoutez les pluginExecutions de vos plugins qui sont affichés avec des erreurs avec les balises <ignore/> sous <action>.

par exemple, pour une erreur write-project-properties, ajoutez ce fragment de code sous la section <pluginExecutions> du fichier lifecycle-mapping-metadata.xml:

 <pluginExecution>
    <pluginExecutionFilter>
       <groupId>org.codehaus.mojo</groupId>
       <artifactId>properties-maven-plugin</artifactId>
       <versionRange>1.0-alpha-2</versionRange>
       <goals>
         <goal>write-project-properties</goal>
       </goals>
    </pluginExecutionFilter>
     <action>
       <ignore />
     </action>
   </pluginExecution>
  • Remplacer ce fichier XML dans le fichier JAR
  • Remplacer le fichier JAR mis à jour dans le dossier du plugin d'Eclipse
  • Redémarrer Eclipse

Vous ne devriez voir aucune erreur à l'avenir pour aucun projet.

0
gowtham