155 votes

maven-dependency-plugin (objectifs "copy-dependencies", "unpack") n'est pas supporté 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, j'obtiens l'erreur suivante 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 me soucier du fait que m2eclipse ne "supporte" pas cette tâche ? Maven le fait, et c'est tout ce qui m'importe vraiment. Comment puis-je faire disparaître cette erreur dans mon projet ?

165voto

maksimov Points 4433

Il semble que ce soit un problème connu. Vous pouvez demander à m2e de l'ignorer.

Option 1 : pom.xml

Ajoutez ce qui suit dans votre <build/> étiquette :

<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... -> Update Project Configuration sur votre projet après cela.

Lire la suite : http://wiki.eclipse.org/M2E_plugin_execution_not_covered#m2e_maven_plugin_coverage_status

Option 2 : Contournement global d'Eclipse

Pour éviter de modifier vos fichiers POM, l'annulation des ignorances peut être appliquée à 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

Sur Eclipse/Preferences/Maven/Lifecycle Mappings naviguez jusqu'à ce fichier et cliquez sur OK :

Eclipse Settings

57voto

CaioToOn Points 9069

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

Pour résoudre ce problème, il suffit de cartographier le cycle de vie qu'il ne reconnaît pas et de demander à M2E de l'exécuter.

Vous devez l'ajouter après votre plugins à l'intérieur de la build . Cela supprimera l'erreur et permettra à M2E de reconnaître l'objectif. copy-depencies de maven-dependency-plugin et faire fonctionner le POM comme prévu, en copiant les dépendances dans le dossier à chaque fois qu'Eclipse le construit. Si vous voulez simplement ignorer l'erreur, alors vous changez <execute /> pour <ignore /> . Il n'est pas nécessaire d'entourer votre maven-dependency-plugin en 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>

38voto

user311174 Points 757

Si les dépendances de copie, unpack, pack, etc., sont importantes pour votre projet, vous ne devez pas les ignorer. Vous devez inclure votre <plugins> en <pluginManagement> testé avec Eclipse Indigo SR1, maven 2.2.1

8voto

SGB Points 269

Malgré la réponse de CaioToOn ci-dessus, j'ai encore eu des problèmes pour faire fonctionner ce système au départ.

Après de multiples tentatives, j'ai finalement réussi à le faire fonctionner. Je colle ma version finale ici - en espérant qu'elle 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>

0voto

Andna Points 1682

Je sais qu'il s'agit d'un ancien message, mais j'ai également rencontré ce problème aujourd'hui 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 m2e erreur.

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