Плагин maven-dependency-plugin (цели "copy-dependencies", "unpack") не поддерживается m2e - PullRequest
154 голосов
/ 03 января 2012

У меня довольно простой проект 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

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

Ответы [ 8 ]

165 голосов
/ 06 января 2012

Кажется, это известная проблема.Вы можете поручить 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: глобальное переопределение затмения

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

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

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

Eclipse Settings

57 голосов
/ 24 августа 2012

Это проблема 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>
38 голосов
/ 18 апреля 2012

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

16 голосов
/ 06 марта 2015

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

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

  1. перейдите в Окно / Настройки / Maven / Discovery /
  2. введите URL каталога: http://download.eclipse.org/technology/m2e/discovery/directory-1.4.xml
  3. нажмите Открыть каталог
  4. выберитеплагин m2e-maven-dependency-plugin
  5. наслаждайтесь
8 голосов
/ 18 июля 2013

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

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

1 голос
/ 18 декабря 2014

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

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

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

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

0 голосов
/ 24 января 2015

Другой вариант - перейти на вкладку «Проблемы», щелкнуть правой кнопкой мыши на ошибке, нажать «Применить быстрое исправление». Должен сгенерировать код игнорирования xml и применить его .pom файл для вас.

0 голосов
/ 31 марта 2013

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

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

<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 ошибку.

...