Maven-dependency-plugin (цели "копии-зависимости", "распаковка" ) не поддерживается m2e

У меня довольно простой проект Maven:

<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>

Тем не менее, я получаю следующую ошибку в 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

Почему мне неинтересно, не работает ли mneclipse для этой задачи? Maven делает, и это все, что мне действительно нужно. Как я могу получить эту ошибку в моем проекте, чтобы уйти?

Ответы

Ответ 1

Кажется, это известная проблема. Вы можете указать m2e игнорировать это.

Вариант 1: pom.xml

Добавьте в свой тег <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>

Вам нужно будет сделать Maven... → После этого обновить конфигурацию проекта в вашем проекте.

Подробнее: http://wiki.eclipse.org/M2E_plugin_execution_not_covered#m2e_maven_plugin_coverage_status

Вариант 2: Глобальное переопределение Eclipse

Чтобы избежать изменения ваших файлов POM, переопределение игнорирования может быть применено ко всему рабочему пространству через настройки Eclipse.

Сохраните этот файл где-нибудь на диске: https://gist.github.com/maksimov/8906462

В Eclipse/Preferences/Maven/Lifecycle Mappings перейдите к этому файлу и нажмите OK:

Eclipse Settings

Ответ 2

Это проблема M2E для Eclipse Выполнение плагина M2E не распространяется.

Чтобы решить эту проблему, все, что вам нужно сделать, - сопоставить жизненный цикл, который он не распознает, и поручить M2E выполнить его.

Вы должны добавить это после plugins, внутри build. Это устранит ошибку и заставит M2E распознать цель copy-depencies maven-dependency-plugin и сделать POM работать как ожидалось, копируя зависимости в папку каждый раз, когда Eclipse будет строить ее. Если вы просто хотите проигнорировать ошибку, измените <execute /> на <ignore />. Не нужно включать maven-dependency-plugin в pluginManagement, как было предложено ранее.

<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>

Ответ 3

Если для вашего проекта важны зависимости от копирования, распаковки, упаковки и т.д., вы не должны его игнорировать. Вы должны заключить свой <plugins> в <pluginManagement>, протестированный с помощью Eclipse Indigo SR1, maven 2.2.1

Ответ 4

Чтобы заставить его работать, вместо того, чтобы игнорировать его, вы можете установить соединитель m2e для плагина maven-dependency:
https://github.com/ianbrandt/m2e-maven-dependency-plugin

Вот как вы это сделаете в Eclipse:

Ответ 5

Несмотря на ответ от CaioToOn выше, у меня все еще были проблемы с тем, чтобы это работало изначально.

После нескольких попыток, наконец, он работает. Вставьте мою последнюю версию здесь - надеясь, что это принесет пользу кому-то еще.

    <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>

Ответ 6

У меня была такая же проблема при попытке загрузить проект Hadoop в eclipse. Я пробовал решения выше, и я считаю, что это могло бы работать в Eclipse Kepler... даже не уверен в этом (попробовал слишком много вещей).

Со всеми проблемами, с которыми я столкнулся, я решил перейти к Eclipse Luna, и решения выше не работали для меня.

Появилось другое сообщение, в котором рекомендуется изменить тег... для пакета. Я начал это делать, и это "очистило" ошибки... Однако я начинаю думать, что изменения укусят меня позже - я не эксперт по Maven.

К счастью, я узнал, как удалить все ошибки. Перейдите в Window- > Preferences- > Maven- > Error/Warnings и измените параметр "Плагин, не охватываемый жизненным циклом...", на "Игнорировать". Надеюсь, что это поможет.

Ответ 7

Я знаю, что это старый пост, но сегодня я тоже столкнулся с этой проблемой, и я использовал шаблон с этой страницы: 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>

и все работает отлично в m2e 1.3.1.

Когда я попытался использовать

<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>

Я также получил ошибку m2e.

Ответ 8

Еще одна опция - перейти к вкладке "Проблемы", щелкнуть правой кнопкой мыши по ошибке, нажать "Быстрое исправление". Он должен генерировать код игнорирования xml и применять его .pom файл для вас.