974 votes

Comment résoudre le problème "L'exécution du plugin n'est pas couverte par la configuration du cycle de vie" pour les constructions Maven de Spring Data.

J'essaie de travailler avec Spring Data et Neo4j . J'ai commencé par essayer de suivre ce guide liés par le site principal. En particulier, j'ai basé mon pom.xml sur le fichier "Fichier d'exemple "Hello, World ! . Voici un extrait de mon pom.xml pour le plugin qui cause les problèmes...

<plugin>
<!-- Required to resolve aspectj-enhanced class features -->
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>aspectj-maven-plugin</artifactId>
    <version>1.0</version>
    <configuration>
        <outxml>true</outxml>
        <aspectLibraries>
            <aspectLibrary>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aspects</artifactId>
            </aspectLibrary>
            <aspectLibrary>
                <groupId>org.springframework.data</groupId>
                <artifactId>spring-data-neo4j</artifactId>
            </aspectLibrary>
        </aspectLibraries>
        <source>1.6</source>
        <target>1.6</target>
    </configuration>
    <executions>
        <!-- ERROR HERE IN ECLIPSE SEE BELOW FOR FULL MESSAGE -->
        <execution>
            <goals>
                <goal>compile</goal>
                <goal>test-compile</goal>
            </goals>
        </execution>
    </executions>
    <dependencies>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
            <version>${aspectj.version}</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjtools</artifactId>
            <version>${aspectj.version}</version>
        </dependency>
    </dependencies>
</plugin>

L'erreur que je vois est la suivante :

 Multiple annotations found at this line:
    - Plugin execution not covered by lifecycle configuration: org.codehaus.mojo:aspectj-maven-plugin:1.0:compile (execution: default, phase: process-classes)
    - Plugin execution not covered by lifecycle configuration: org.codehaus.mojo:aspectj-maven-plugin:1.0:test-compile (execution: default, phase: process-classes)

J'utilise Eclipse 3.6.2 et m2e 0.13. Je ne suis pas un expert de Maven, alors veuillez être très explicatif dans vos réponses si possible.

J'ai aussi essayé m2e 1.0.0 via ce site de mise à jour et j'obtiens toujours la même erreur.

1 votes

Quelle version de maven utilisez-vous ? Spring Data (Graph) a utilisé maven2 pour son processus de construction (principalement à cause des problèmes liés au docbook-plugin). (BTW. les projets Spring Data vont migrer vers gradle bientôt :)

1 votes

Pour eclipse, j'utilise la version 3.0.3 de maven intégré (ce qui est livré avec m2e). Est-ce que tout Spring passe à gradle ou seulement Spring Data ?

1 votes

Oubliez ça en travaillant avec Groovy. Quel cauchemar. Je ne peux même pas utiliser Indigo maintenant à cause de cette parodie.

1477voto

Simeon Leyzerzon Points 3368

Dans le cas d'un problème similaire, au lieu d'utiliser la suggestion d'Andrew pour la correction, cela a fonctionné simplement après que j'ai introduit <PluginManagement> à la balise pom.xml en question. Il semble que cette erreur soit due à une balise <pluginManagement> manquante. Donc, afin d'éviter les exceptions dans Eclipse, il faut simplement enfermer toutes les balises de plugin à l'intérieur d'une balise <PluginManagement> comme ceci :

<build>
    <pluginManagement>
        <plugins>
            <plugin> ... </plugin>
            <plugin> ... </plugin>
                  ....
        </plugins>
    </pluginManagement>
</build>

Une fois cette structure mise en place, l'erreur disparaît.

6 votes

Cela a fonctionné pour moi. Mon pom.xml était généré par Spring Roo et il manquait la balise pluginManagement. Il semble que cela puisse être un problème de Roo dans certains cas...

34 votes

Cela fonctionne pour moi aussi, mais quelqu'un peut-il expliquer pourquoi ?

108 votes

@Andrew Je pense que cela fonctionne parce que m2e ne cherche pas les plugins dans pluginManagement mais seulement dans build/plugins . Dans le monde Maven, il y a une différence entre les deux - le premier définit "si vous utilisez ce plugin, voici la configuration à utiliser", alors que le second indique "utilisez ce plugin". Voir ce poste et ses deux premières réponses.

424voto

Andrew White Points 23508

Quel désordre ! Je ne me souviens plus où j'ai trouvé ça mais j'ai dû ajouter ce qui suit pour que M2Eclipse soit heureux. Ce qui est encore plus triste, c'est qu'il n'est pas vraiment facile de comprendre pourquoi ce tag est nécessaire.

<build>
      ... various 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.codehaus.mojo</groupId>
                                    <artifactId>aspectj-maven-plugin</artifactId>
                                    <versionRange>[1.0,)</versionRange>
                                    <goals>
                                        <goal>test-compile</goal>
                                        <goal>compile</goal>
                                    </goals>
                                </pluginExecutionFilter>
                                <action>
                                    <execute />
                                </action>
                            </pluginExecution>
                        </pluginExecutions>
                    </lifecycleMappingMetadata>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

Il y avait un certain nombre d'autres problèmes avec le plug-in M2Eclipse qui ne fonctionnait tout simplement pas avec Spring Data. Au final, j'ai désactivé M2Eclipse en faveur du plug-in Plug-in Apache Eclipse .

3 votes

Quel dépôt de plugins héberge le plugin org.eclipse.m2e:lifecycle-mapping ?

6 votes

Si votre eclipse ne trouve pas le plugin org.eclipse.m2e:lifecycle-mapping, c'est parce que vous avez placé le snippet ci-dessus dans la mauvaise liste de plugins dans le pom, il doit aller dans pluginManagement.

1 votes

Pour information : si un plug-in personnalisé était spécifié dans un profil, je devais alors configurer le mappage du cycle de vie dans le même profil. Le fait de le spécifier "en général" dans build/pluginManagement en dehors du profil qui contient le plug-in n'a pas résolu l'erreur. La configuration des mêmes informations dans le profil/build/pluginManagement l'a fait.

226voto

Vedran Points 2107

Solution proposée par Documentation d'Eclipse m2e :

  1. Utilisez solution rapide sur l'erreur dans pom.xml et sélectionnez Permanently mark goal run in pom.xml as ignored in Eclipse build - cela générera le code passe-partout nécessaire pour vous.

  2. Pour demander à Eclipse d'exécuter votre plugin lors de la construction, il suffit de remplacer la balise <ignore/> tag avec <execute/> dans la configuration générée :

    <action>
        <execute/>
    </action>

    Vous pouvez également demander à Eclipse d'exécuter le plugin sur les constructions incrémentales :

    <action>
        <execute>
            <runOnIncremental>true</runOnIncremental>
        </execute >
    </action>

6 votes

Vous pouvez également ajouter <runOnIncremental>false|true</runOnIncremental> à l'intérieur de la balise execute, pour qu'eclipse appelle ce plugin maven lors des constructions incrémentales.

4 votes

Cette solution a également fonctionné pour moi, mais il n'a pas été nécessaire d'exécuter l'étape 2) de la solution proposée.

8 votes

Si vous ne les marquez pas comme "execute", le build d'eclipse ne lancera pas ces exécutions de plugins, mais cela pourrait fonctionner aussi bien.

115voto

Thomas Broyer Points 45499

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

Pour résoudre certains problèmes de longue date, m2e 1.0 requiert des instructions explicites sur ce qu'il faut faire avec tous les plugins Maven liés à des phases "intéressantes" de cycle de vie de la construction du projet. Nous appelons ces instructions "project build lifecycle de construction de projet" ou simplement "cartographie du cycle de vie". parce qu'elles définissent comment m2e fait correspondre les informations du fichier pom.xml du projet à l'espace de travail Eclipse du projet projet Eclipse workspace et le comportement pendant construction de l'espace de travail Eclipse.

Mappage du cycle de vie de la construction du projet peut être spécifié dans le fichier pom.xml du projet, contribué par plugins Eclipse et il existe également configuration par défaut pour certains plugins Maven les plus utilisés, livrés avec avec m2e. Nous appelons ces métadonnées "lifecycle sources de métadonnées de mappage du cycle de vie". m2e va créera un marqueur d'erreur comme ci-dessous pour toutes exécutions de plugins qui n'ont pas de mappage du cycle de vie dans l'une des sources de métadonnées de mappage.

Plugin execution not covered by lifecycle configuration:
org.apache.maven.plugins:maven-antrun-plugin:1.3:run
   (execution: generate-sources-input, phase: generate-sources)

plugin m2e matches aux actions en utilisant combinaison de plugin groupId, artefactId, gamme de versions et objectif. Il y a trois actions de base que m2e peut être chargé de faire avec un plugin exécution ignorer , exécuter et déléguer à un projet configurateur .

96 votes

Il s'agit d'une explication du problème, pas d'une solution, du moins pas une que je puisse prendre et utiliser.

55 votes

Vous avez donné la réponse vous-même, et elle se trouve sur la page dont j'ai donné le lien. Je trouve plus important de comprendre ce que signifie une erreur (et ensuite de trouver facilement comment la corriger) que de copier/coller aveuglément quelques bribes. "Science sans conscience n'est que ruine de l'âme." (François Rabelais)

0 votes

Hmm, cette page wiki a été mise à jour depuis que j'ai posté ma réponse et aussi depuis que je l'ai lu pour la dernière fois.

31voto

noirbizarre Points 1523

M2e 0,13 introduire a connecteurs m2e et m2e Market Place pour étendre les fonctionnalités de m2e. C'est comme l'ancien dépôt m2e-extras.

Vous pouvez accéder à la place de marché m2e à partir des préférences : Préférences>Maven>Découverte>Ouvrir le catalogue . Installation de Intégration du CAP a résolu la plupart des problèmes de plugins pour moi.

1 votes

Je ne vois pas "Intégration WTP" dans la liste. Utilisez-vous un catalogue autre que celui par défaut ?

0 votes

J'utilise le catalogue par défaut mais vous avez raison : je ne le vois plus.

1 votes

community.jboss.org/fr/outils/blog/2011/06/23/ . Voir la mise à jour 2, de toute façon +1 pour le grand désordre

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