web-dev-qa-db-fra.com

Le plugin maven-dependency (objectifs "dépendances de la copie", "décompresser") n'est pas pris en charge par m2e

J'ai un projet Maven assez simple:

<project>
    <dependencies>
        ...
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.Apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>2.4</version>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/dependencies</outputDirectory>
                        </configuration>    
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

Cependant, l'erreur suivante apparaît dans m2Eclipse:

Description Resource    Path    Location    Type
maven-dependency-plugin (goals "copy-dependencies", "unpack") is not supported by m2e. pom.xml  /jasperreports-test line 60 Maven Project Build Lifecycle Mapping Problem

Pourquoi est-ce que je me soucie de savoir si m2Eclipse ne "prend" pas en charge cette tâche? Maven le fait, et c'est tout ce qui m'importe. Comment puis-je obtenir cette erreur dans mon projet à partir?

154
Naftuli Kay

Cela semble être un problème connu. Vous pouvez demander à m2e de l'ignorer.

Option 1: pom.xml

Ajoutez ce qui suit dans votre balise <build/>:

<pluginManagement>
<plugins>
    <!-- Ignore/Execute plugin execution -->
    <plugin>
        <groupId>org.Eclipse.m2e</groupId>
        <artifactId>lifecycle-mapping</artifactId>
        <version>1.0.0</version>
        <configuration>
            <lifecycleMappingMetadata>
                <pluginExecutions>
                    <!-- copy-dependency plugin -->
                    <pluginExecution>
                        <pluginExecutionFilter>
                            <groupId>org.Apache.maven.plugins</groupId>
                            <artifactId>maven-dependency-plugin</artifactId>
                            <versionRange>[1.0.0,)</versionRange>
                            <goals>
                                <goal>copy-dependencies</goal>
                            </goals>
                        </pluginExecutionFilter>
                        <action>
                            <ignore />
                        </action>
                    </pluginExecution>
                </pluginExecutions>
            </lifecycleMappingMetadata>
        </configuration>
    </plugin>
   </plugins></pluginManagement>

Vous devrez faire Maven ... -> Mettre à jour la configuration du projet sur votre projet après cela.

En savoir plus: http://wiki.Eclipse.org/M2E_plugin_execution_not_covered#m2e_maven_plugin_coverage_status

Option 2: neutralisation globale d'Eclipse

Pour éviter de modifier vos fichiers POM, le remplacement ignorer peut être appliqué à l’ensemble de l’espace de travail via les paramètres Eclipse.

Enregistrez ce fichier quelque part sur le disque: https://Gist.github.com/maksimov/8906462

Dans Eclipse/Preferences/Maven/Lifecycle Mappings, naviguez dans ce fichier et cliquez sur OK:

Eclipse Settings

165
maksimov

C'est un problème de M2E pour Eclipse exécution du plugin M2E non couverte .

Pour résoudre ce problème, tout ce que vous avez à faire est de cartographier le cycle de vie qu’il ne reconnaît pas et de demander à M2E de l’exécuter.

Vous devriez ajouter ceci après votre plugins, à l'intérieur de build. Cela supprimera l'erreur et permettra à M2E de reconnaître l'objectif copy-depencies de maven-dependency-plugin et de faire fonctionner le POM comme prévu, en copiant les dépendances dans un dossier chaque fois qu'Eclipse le construit. Si vous souhaitez simplement ignorer l'erreur, modifiez <execute /> pour <ignore />. Inutile de joindre votre maven-dependency-plugin à pluginManagement, comme suggéré précédemment.

<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-dependency-plugin</artifactId>
                <versionRange>[2.0,)</versionRange>
                <goals>
                  <goal>copy-dependencies</goal>
                </goals>
              </pluginExecutionFilter>
              <action>
                <execute />
              </action>
            </pluginExecution>
          </pluginExecutions>
        </lifecycleMappingMetadata>
      </configuration>
    </plugin>
  </plugins>
</pluginManagement>
57
Caio Cunha

Si les dépendances, le décompactage, l’emballage, etc., sont importants pour votre projet, vous ne devez pas l’ignorer. Vous devez joindre votre <plugins> à <pluginManagement> testé avec Eclipse Indigo SR1, version 2.2.1.

38
user311174

Pour que cela fonctionne, au lieu de l'ignorer, vous pouvez installer le connecteur m2e pour le plugin maven-dependency-plugency:
https://github.com/ianbrandt/m2e-maven-dependency-plugin

Voici comment vous le feriez dans Eclipse:

  1. allez dans Window/Preferences/Maven/Discovery /
  2. entrez l'URL du catalogue: http://download.Eclipse.org/technology/m2e/discovery/directory-1.4.xml
  3. cliquez sur Ouvrir catalogue
  4. choisissez le plug-in m2e-maven-dependency
  5. prendre plaisir
16
mario

Malgré la réponse de CaioToOn ci-dessus, j'avais toujours du mal à faire en sorte que cela fonctionne initialement.

Après plusieurs tentatives, finalement le faire fonctionner. Je colle ma version finale ici - en espérant que cela profitera à quelqu'un d'autre.

    <build> 
        <plugins>
            <!--
            Copy all Maven Dependencies (-MD) into libMD/ folder to use in classpath via shellscript
             --> 
            <plugin>
                <groupId>org.Apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>2.8</version>
                <executions>
                    <execution>
                        <id>copy</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/libMD</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
        <!--  
        Above maven-dependepcy-plugin gives a validation error in m2e. 
        To fix that, add the plugin management step below. Per: http://stackoverflow.com/a/12109018
        -->
        <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-dependency-plugin</artifactId>
                                        <versionRange>[2.0,)</versionRange>
                                        <goals>
                                            <goal>copy-dependencies</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <execute />
                                    </action>
                                </pluginExecution>
                            </pluginExecutions>
                        </lifecycleMappingMetadata>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
8
SGB

J'ai eu le même problème en essayant de charger le projet Hadoop dans Eclipse. J'ai essayé les solutions ci-dessus, et je pense que cela aurait peut-être fonctionné dans Eclipse Kepler… je ne suis même plus sûr (j'ai essayé trop de choses).

Avec tous les problèmes que je rencontrais, j'ai décidé de passer à Eclipse Luna, et les solutions ci-dessus ne m'ont pas fonctionné.

Un autre article recommandait de modifier le tag ... en package. J'ai commencé à le faire et cela "effacerait" les erreurs ... Cependant, je commence à penser que les changements me mordraient plus tard - je ne suis pas un expert en Maven.

Heureusement, j'ai découvert comment supprimer toutes les erreurs. Allez dans Fenêtre-> Préférences-> Maven-> Erreur/Avertissements et changez l'option "Exécution du plugin non couverte par le cycle de vie ..." en "Ignorer". J'espère que ça aide.

1
Myluco

Je sais que c’est un vieux message, mais j’ai eu du mal à résoudre ce problème et j’ai utilisé le modèle de cette page: http://maven.Apache.org/plugins/maven-dependency-plugin/usage.html

<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.Apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>2.7</version>
        <executions>
          <execution>
            <id>copy</id>
            <phase>package</phase>
            <goals>
              <goal>copy</goal>
            </goals>
            <configuration>
              <artifactItems>
                <artifactItem>
                  <groupId>[ groupId ]</groupId>
                  <artifactId>[ artifactId ]</artifactId>
                  <version>[ version ]</version>
                  <type>[ packaging ]</type>
                  <classifier> [classifier - optional] </classifier>
                  <overWrite>[ true or false ]</overWrite>
                  <outputDirectory>[ output directory ]</outputDirectory>
                  <destFileName>[ filename ]</destFileName>
                </artifactItem>
              </artifactItems>
              <!-- other configurations here -->
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  [...]
</project>

et tout fonctionne bien sous m2e 1.3.1.

Quand j'ai essayé d'utiliser

<build>
    <plugins>
        <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>2.4</version>
            <executions>
                <execution>
                    <id>copy-dependencies</id>
                    <phase>package</phase>
                    <goals>
                        <goal>copy-dependencies</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${project.build.directory}/dependencies</outputDirectory>
                    </configuration>    
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

J'ai aussi eu l'erreur m2e.

0
Andna

Une autre option consiste à accéder à l'onglet des problèmes, à cliquer avec le bouton droit de la souris sur l'erreur, à cliquer sur appliquer une solution rapide. Le doit générer le code XML Ignorer et l’appliquer pour vous.

0
blue-sky