Как я могу сопоставить фазы жизненного цикла Maven, не охватываемые подключаемым модулем Eclipse m2e?

Я использую Eclipse Kepler на Mac 10.9.5. Я импортировал несколько проектов Maven с помощью плагина m2e Eclipse. Все эти проекты являются детьми родительского pom. Когда я смотрю на «Обзор» в отдельных дочерних файлах pom.xml, я вижу такие вещи:

Plugin execution not covered by lifecycle configuration: org.codehaus.mojo:properties-maven-plugin:1.0-alpha-2:write-project-properties (execution: default, phase: process-resources)

Я бы хотел, чтобы Eclipse выполнял эти фазы жизненного цикла в нужное время, но я не знаю, как это сделать. Когда я выбираю предложение Eclipse…

Permanently mark goal write-project-properties in pom.xml as ignore

Я выбрал родительский файл pom.xml при появлении запроса «Выберите место для игнорирования», однако ошибка не исчезает, когда я просматриваю дочерний файл pom.xml в редакторе Eclipse. Как я могу отобразить фазы жизненного цикла, не охватываемые m2e?

Изменить:

В ответ я пошел в Eclipse -> Настройки -> Maven -> Сопоставления жизненного цикла, щелкнул «Открыть метаданные сопоставления жизненного цикла рабочей области» и отредактировал файл, как было предложено...

<?xml version="1.0" encoding="UTF-8"?>
<lifecycleMappingMetadata>
    <pluginExecutions>
        <pluginExecution>
            <pluginExecutionFilter>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>xmlbeans-maven-plugin</artifactId>
                <versionRange>2.3.3</versionRange>
                <goals>
                    <goal>xmlbeans</goal>
                </goals>
            </pluginExecutionFilter>
            <action>
                <ignore />
            </action>
        </pluginExecution>
        <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>
                <execute />
            </action>
        </pluginExecution>
    </pluginExecutions>
</lifecycleMappingMetadata>

Даже после перезапуска Eclipse, когда я открываю дочерний файл pom.xml, ошибки «Выполнение плагина, не охваченное конфигурацией жизненного цикла», остаются прежними.


person Dave    schedule 05.05.2015    source источник
comment
Я думаю, вы можете найти ответ в этих вопросах/ответах: stackoverflow.com/questions/6352208/   -  person Fabien    schedule 06.05.2015
comment
Однако я не использую плагин aspectj-maven.   -  person Dave    schedule 09.06.2015


Ответы (1)


M2Eclipse (плагин интеграции Maven для Eclipse) сопоставляет и выполняет стандартные phases и goals Maven во внутреннем рабочем процессе сборки Eclipse.

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

[...] требует явных инструкций, что делать со всеми подключаемыми модулями Maven, привязанными к «интересным» фазам [...] жизненного цикла сборки проекта. Мы называем эти инструкции «сопоставлением жизненного цикла сборки проекта» или просто «сопоставлением жизненного цикла», поскольку они определяют, как m2e сопоставляет информацию из файла проекта pom.xml с конфигурацией проекта рабочей области Eclipse и поведением во время сборки рабочей области Eclipse.

Эти ошибки можно решить в каждом проекте или в вашей глобальной установке Eclipse.

Отображение жизненного цикла сборки проекта можно настроить в файле pom.xml проекта, предоставить плагины Eclipse или по умолчанию использовать часто используемые плагины Maven, поставляемые с m2e. Мы называем это «источниками метаданных сопоставления жизненного цикла».

Глобальный файл настроек Eclipse называется lifecycle-mapping-metadata.xml и настраивается с помощью «Сопоставления жизненного цикла» в диалоговом окне «Настройки Maven» [1].

M2Eclipse сопоставляет выполнение плагинов с действиями, используя комбинацию идентификатора группы плагина, идентификатора артефакта, диапазона версий и цели. Существует три основных действия, которые M2Eclipse может выполнить при выполнении плагина: игнорировать, выполнить и делегировать конфигуратору проекта.

[...]

Опция ignore, как следует из названия, сообщает M2Eclipse молча игнорировать выполнение плагина.

[...]

Параметр выполнить сообщает m2e, что нужно выполнить действие как часть полной или добавочной сборки рабочей области Eclipse.

делегировать конфигуратору проекта означает наличие подключаемых модулей адаптера Eclipse в Eclipse Marketplace. Плагин адаптера выполняет phases и goals более специфичным для плагина Maven способом.

Реальные настройки (структура XML) не очень интуитивно понятны, но немного описаны в ссылке выше.

В вашем случае lifecycle-mapping-metadata.xml будет выглядеть так:

<?xml version="1.0" encoding="UTF-8"?>
<lifecycleMappingMetadata>
  <pluginExecutions>
[...]
    <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>
[...]
  </pluginExecutions>
</lifecycleMappingMetadata>

ProTip: Если у вас больше проектов и вы постоянно используете набор плагинов Maven, переместите lifecycle-mapping-metadata.xml в SCM (git, svn, cvs...).

ИЗМЕНИТЬ

Добавьте все цели плагина и, возможно, дополнительные плагины, чтобы избежать этих ошибок. Внимательно прочитайте сообщение об ошибке для дополнительных goal или плагинов.

После любого сохраненного изменения lifecycle-mapping-metadata.xml вам необходимо перезагрузить содержимое в диалоговом окне настроек Maven[1] и обновить все проекты на основе Maven в рабочей области.

Щелкните правой кнопкой мыши проект Maven в рабочей области и выберите Maven › Update Projects.... Выберите/все проекты Maven и установите следующие флажки:

  • Обновить конфигурацию проекта из pom.xml
  • Обновить ресурсы рабочей области из локальной файловой системы
  • Чистые проекты

ИЗМЕНИТЬ

[1] Диалоговое окно настроек Maven было расположено в Файл › Окно › Настройки › Maven › Отображение жизненного цикла до Exclipse Oxygen.

person barthel    schedule 12.06.2015
comment
Я отредактировал свой вопрос, чтобы показать, что произошло, когда я отредактировал файл, как вы предложили (я поставил выполнить вместо игнорирования). но плагин, не охваченный ошибками жизненного цикла, остается. - person Dave; 15.06.2015
comment
Это точно такая же ошибка или разные цели? Вы должны добавить все несопоставленные цели и, возможно, другие плагины. - person barthel; 16.06.2015
comment
@barthel ProTip ... где разместить lifecycle-mapping-metadata.xml? / или /src или где? - person Grim; 09.07.2016
comment
@PeterRader Для более чем одного проекта используйте специальный проект, например eclipse-settings или аналогичный, и настройте его, как описано выше. Также возможно включить параметры жизненного цикла в файл POM. Взгляните на: затмение .org/m2e/документация/ - person barthel; 10.07.2016
comment
@peterh Зачем минусовать? Проверьте дату моего ответа! Сколько лет Eclipse Oxygen? - person barthel; 15.09.2016
comment
@barthel Хорошо, спасибо за расширение! Прошу прощения за беспокойство. В Java я довольно часто нахожу плохие ответы, и это сделало меня немного чувствительным к ним. - person peterh; 15.09.2016
comment
@barthel, что значит молча игнорировать выполнение плагина? Означает ли это, что цель не выполнена? <ignore/> ни в коем случае не будет приемлемым выбором... - person mirec; 14.01.2017
comment
@mirec Это цитата с сайта eclipse. <ignore /> означает, что эта цель не будет выполнена. В некоторых случаях цель должна быть пропущена в рамках жизненного цикла Eclipse. Стратегии проектов Eclipse и Maven не совсем совпадают. - person barthel; 15.01.2017