Выполнение плагина не охватывается конфигурацией жизненного цикла (архетип JBossas 7 EAR) - PullRequest
123 голосов
/ 04 февраля 2012

Я использую Eclipse 3.7 Indigo с плагином Maven M2E 1.0.100.

При использовании архетипа EAR JavaEE 6 JBoss 7. pom для EAR дает мне эту ошибку:

Выполнение плагина не охватывается конфигурацией жизненного цикла: org.apache.maven.plugins: Maven-уха-плагин: 2.6: генерировать-приложения XML (выполнение: default-generate-application-xml, phase: генерировать-ресурсы)

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-ear-plugin</artifactId>
   <version>2.6</version>
   <configuration>
      <!-- Tell Maven we are using Java EE 6 -->
      <version>6</version>
      <!-- Use Java EE ear libraries as needed. Java EE ear libraries 
                  are in easy way to package any libraries needed in the ear, and automatically 
                  have any modules (EJB-JARs and WARs) use them -->
      <defaultLibBundleDir>lib</defaultLibBundleDir>
      <modules></modules>
   </configuration>
<plugin>

Ответы [ 10 ]

137 голосов
/ 04 февраля 2012

Это «особенность» плагина M2E, который был представлен некоторое время назад.Он не имеет прямого отношения к плагину EAR JBoss, но также имеет место с большинством других плагинов Maven.

Если в вашем pom определено выполнение плагина (например, maven-ear-plugin:generate-application-xml), вам также необходимодобавить дополнительную информацию о конфигурации для M2E, которая сообщает M2E, что делать, когда сборка запускается в Eclipse, например, если M2E игнорирует или не выполняет выполнение плагина, если это также делается для инкрементных сборок, ... Если эта информация отсутствует,M2E жалуется на это, показывая следующее сообщение об ошибке:

«Выполнение плагина не охватывается конфигурацией жизненного цикла»

Смотрите здесь более подробное объяснение и пример конфигурации, которая требуетдля добавления в пом, чтобы эта ошибка исчезла:

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

43 голосов
/ 04 сентября 2013

в любом случае уже слишком поздно, но мое решение было простым щелчком правой кнопкой мыши на сообщении об ошибке в Eclipse и выбором Quick Fix >> Игнорировать для каждого pom с такими ошибками

29 голосов
/ 19 октября 2014

Eclipse имеет концепцию инкрементных сборок. Это невероятно полезно, так как экономит много времени.

Как это полезно

Скажем, вы только что изменили один файл .java. Инкрементные сборщики смогут скомпилировать код без необходимости перекомпиляции всего (что займет больше времени).

В чем проблема с плагинами Maven

Большинство плагинов maven не предназначены для инкрементных сборок и, следовательно, создают проблемы для m2e. m2e не знает, является ли цель плагина чем-то важным или не имеет значения. Если он просто запускает каждый плагин при изменении одного файла, это займет много времени.

По этой причине m2e полагается на информацию метаданных, чтобы выяснить, как должно выполняться выполнение. m2e предлагает различные варианты предоставления этой информации метаданных, и порядок предпочтений такой, как показано ниже (от высшего к низшему)

  1. pom.xml файл проекта
  2. parent, grand-parent и т. Д. Pom.xml файлы
  3. [m2e 1.2+] настройки рабочего пространства
  4. установленных расширений m2e
  5. [m2e 1.1+] метаданные отображения жизненного цикла, предоставляемые плагином maven
  6. метаданные отображения жизненного цикла по умолчанию, поставляемые с m2e

1,2 относится к указанию раздела pluginManagement в теге вашего файла pom или любого из его родителей. M2E читает эту конфигурацию, чтобы сконфигурировать проект. Ниже приведен фрагмент m2e, который игнорирует цели jslint и compress для yuicompressor-maven-plugin

<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>net.alchim31.maven</groupId>
                                    <artifactId>yuicompressor-maven-plugin</artifactId>
                                    <versionRange>[1.0,)</versionRange>
                                    <goals>
                                        <goal>compress</goal>
                                        <goal>jslint</goal>
                                    </goals>
                                </pluginExecutionFilter>
                                <action>
                                    <ignore />
                                </action>
                            </pluginExecution>
                        </pluginExecutions>
                    </lifecycleMappingMetadata>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>

3) Если вы не предпочитаете загрязнять свой pom-файл этими метаданными, вы можете сохранить их во внешнем XML-файле (вариант 3). Ниже приведен пример файла сопоставления, который инструктирует m2e игнорировать цели jslint и compress для yuicompressor-maven-plugin

<?xml version="1.0" encoding="UTF-8"?>
<lifecycleMappingMetadata>
    <pluginExecutions>
        <pluginExecution>
            <pluginExecutionFilter>
                <groupId>net.alchim31.maven</groupId>
                <artifactId>yuicompressor-maven-plugin</artifactId>
                <versionRange>[1.0,)</versionRange>
                <goals>
                    <goal>compress</goal>
                    <goal>jslint</goal>
                </goals>
            </pluginExecutionFilter>
            <action>
                <ignore/>
            </action>
        </pluginExecution>
    </pluginExecutions>
</lifecycleMappingMetadata>

4) Если вам не нравится ни один из этих 3 вариантов, вы можете использовать соединитель (расширение) m2e для подключаемого модуля maven. Соединитель, в свою очередь, предоставит метаданные для m2e. Вы можете увидеть пример информации метаданных в соединителе по этой ссылке . Вы могли заметить, что метаданные относятся к конфигуратору. Это просто означает, что m2e передаст ответственность этому конкретному java-классу, предоставленному автором расширения. Конфигуратор может настроить проект (например, добавить дополнительные исходные папки и т. Д.) И решить, выполнять ли фактический плагин maven во время инкрементной сборки (если неправильно сконфигурирован в конфигураторе, это может привести к бесконечным сборкам проекта)

См. Эти ссылки для примера конфигурации ( link1 , link2 ). Так что, если плагин является чем-то, что может управляться через внешний разъем, вы можете установить его. m2e ведет список таких соединителей, предоставленных другими разработчиками. Это называется каталогом открытий. m2e предложит вам установить соединитель, если у вас еще нет метаданных отображения жизненного цикла для выполнения с помощью какой-либо из опций (1-6), а каталог обнаружения имеет некоторое расширение, которое может управлять выполнением.

На рисунке ниже показано, как m2e предлагает установить соединитель для build-helper-maven-plugin. install connector suggested from the discovery catalog.

5) m2e поощряет авторов плагинов поддерживать добавочную компоновку и предоставлять сопоставление жизненного цикла в самом плагине maven. Это означает, что пользователям не придется использовать какие-либо дополнительные сопоставления жизненного цикла или коннекторы. Некоторые авторы плагинов имеют это уже реализовано

6) По умолчанию m2e содержит метаданные отображения жизненного цикла для большинства обычно используемых плагинов, таких как maven-compiler-plugin и многих других.

Теперь вернемся к вопросу: вы, вероятно, можете просто предоставить отображение игнорирования жизненного цикла в 1, 2 или 3 для той конкретной цели, которая создает проблемы для вас.

14 голосов
/ 26 ноября 2014

Хороший способ напомнить вам, что m2e мог бы быть лучше настроен без проекта, унаследовавшего маркер ложноположительной ошибки, - просто понизить эти ошибки до предупреждений:

Окно -> Настройки -> Maven ->Ошибки / Предупреждения -> Выполнение плагина не охватывается конфигурацией жизненного цикла = Предупреждение

12 голосов
/ 02 октября 2012

Я попытался выполнить определенное подключение сразу после очистки, т.е. после очистки (по умолчанию это чистая фаза).Это сработало для меня с Индиго затмения.Только что добавленная пост-чистка решила проблему для меня.

<executions>
  <execution>
    <configuration>
    </configuration>
   <phase>post-clean</phase>
    <goals>
      <goal>update-widgetset</goal>
    </goals>
  </execution>
</executions> 
2 голосов
/ 11 июля 2013

Мне удалось решить ту же проблему с помощью maven-antrun-plugin и jaxb2-maven-plugin в Eclipse Kepler 4.3, применив это решение: http://wiki.eclipse.org/M2E_plugin_execution_not_covered#Eclipse_4.2_add_default_mapping
Итак, содержимое моего% elipse_workspace_name% /.metadata / .plugins / org.eclipse.m2e.core / lifecycle-mapping-metadata.xml выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<lifecycleMappingMetadata>
  <pluginExecutions>
    <pluginExecution>
      <pluginExecutionFilter>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>
        <versionRange>1.3</versionRange>
        <goals>
          <goal>run</goal>
        </goals>
      </pluginExecutionFilter>
      <action>
        <ignore />
      </action>
    </pluginExecution>
    <pluginExecution>
      <pluginExecutionFilter>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>jaxb2-maven-plugin</artifactId>
        <versionRange>1.2</versionRange>
        <goals>
          <goal>xjc</goal>
        </goals>
      </pluginExecutionFilter>
      <action>
        <ignore />
      </action>
    </pluginExecution>
  </pluginExecutions>
</lifecycleMappingMetadata>

* Необходимо было перезапустить Eclipse, чтобы увидеть, что ошибки исчезли.

1 голос
/ 21 июня 2014

Начиная с Maven Eclipse (m2e) версии 0.12 все цели жизненного цикла Maven должны соответствовать установленному расширению m2e.В этом случае у maven-ear-plugin была не назначенная цель default-generate-application-xml.

Вы можете исключить не отображенные цели жизненного цикла, просто следуя приведенным ниже инструкциям:

https://wiki.eclipse.org/M2E_plugin_execution_not_covered

В качестве альтернативы просто щелкните правой кнопкой мыши сообщение об ошибке в Eclipse и выберите Quick Fix -> Ignore for every pom with such errors.

Будьте осторожны, игнорируя цели жизненного цикла: обычно цели делают что-то полезноеи если вы настроите их так, чтобы они игнорировались в Eclipse, вы можете пропустить важные этапы сборки.Возможно, вы также захотите добавить поддержку расширения EAR в Maven Eclipse для цели, не связанной с жизненным циклом.

0 голосов
/ 28 июля 2015

Хотя вопрос слишком старый, но я хотел бы поделиться решением, которое сработало для меня, потому что я уже проверил все, что касается этой ошибки. Это была боль, я потратил два дня, пытаясь найти решение:

обновить плагин M2e в eclipse

очистить и построить заново

0 голосов
/ 13 ноября 2013

Вам необходимо понять содержимое M2E_plugin_execution_not_covered и выполнить шаги, указанные ниже:

  • Выберите файл org.eclipse.m2e.lifecyclemapping.defaults jar из папки подключаемых модулей eclipse
  • Извлеките его и откройте файл lifecycle-mapping-metadata.xml, где вы найдете все плагины Executions.
  • Добавьте pluginExecutions ваших плагинов, которые отображаются как ошибки с <ignore/> в тегах <action>.

например: для ошибки write-project-properties добавьте этот фрагмент в раздел <pluginExecutions> файла lifecycle-mapping-metadata.xml:

 <pluginExecution>
    <pluginExecutionFilter>
       <groupId>org.codehaus.mojo</groupId>
       <artifactId>properties-maven-plugin</artifactId>
       <versionRange>1.0-alpha-2</versionRange>
       <goals>
         <goal>write-project-properties</goal>
       </goals>
    </pluginExecutionFilter>
     <action>
       <ignore />
     </action>
   </pluginExecution>
  • Заменить этот XML-файл в JAR
  • Заменить обновленный JAR в папке плагинов Eclipse
  • Перезапустить Eclipse

Вы не должны видеть ошибок в будущем для любого проекта.

0 голосов
/ 29 апреля 2013

С помощью механизма, объясненного в ответе Яна, я дал команду подключению m2e игнорировать цель «generate-application-xml». Это избавляет от ошибки и, похоже, работает, так как m2e создает application.xml.

Таким образом, в основном ошибка вынудила нас решить, какой механизм отвечает за создание application.xml, когда сборка Maven выполняется внутри Eclipse под управлением плагина m2e. И мы решили, что за это отвечает m2e.

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-ear-plugin</artifactId>
            <version>2.6</version>
            <configuration>
                <version>6</version>
                <defaultLibBundleDir>lib</defaultLibBundleDir>
            </configuration>
        </plugin>
    </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.apache.maven.plugins</groupId>
                                    <artifactId>maven-ear-plugin</artifactId>
                                    <versionRange>[2.1,)</versionRange>
                                    <goals>
                                        <goal>generate-application-xml</goal>
                                    </goals>
                                </pluginExecutionFilter>
                                <action>
                                    <ignore></ignore>
                                </action>
                            </pluginExecution>
                        </pluginExecutions>
                    </lifecycleMappingMetadata>
                </configuration>
            </plugin>**
        </plugins>
    </pluginManagement>
</build>
...