Выполнение плагина не распространяется на ошибку конфигурации жизненного цикла в Eclipse Juno

Почему моя сборка Maven отлично работает в командной строке, но когда я запускаю в Eclipse, мне нужно добавить этот раздел в мой pom.xml, иначе я получаю эту ошибку:

Plugin execution not covered by lifecycle configuration
: org.apache.maven.plugins:maven-compiler-plugin:3.1:testCompile
 (execution: default-testCompile, phase: test-compile)

Не странно, что это происходит вокруг плагина 'maven-compiler-plugin'? Я не могу найти еще один такой вопрос в Google, хотя я нахожу много предложений по исправлению сторонних плагинов. Я много исследовал и искал и не нашел объяснений об этом, даже здесь.

И pom.xml необходимо исправить это:

<!--This plugin 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-compiler-plugin</artifactId>
                        <versionRange>[3.1,)</versionRange>
                        <goals>
                            <goal>testCompile</goal>
                        </goals>
                    </pluginExecutionFilter>
                    <action> 
                        <ignore></ignore>
                    </action>
                </pluginExecution>
            </pluginExecutions>
        </lifecycleMappingMetadata>
    </configuration>
</plugin>

И, вот мой простой проект на GitHub, если вы хотите увидеть мой источник.

Ответ 1

Я, наконец, решил. Похоже, что раздел "pluginManagement", который я написал выше, требуется проекту Eclipse Maven в целом, хотя я его сопротивлялся, и даже если никакая документация, которую я могу найти в Интернете, никогда не упоминает это явно.

Кроме того, "версия Range" в секции исключения жизненного цикла, похоже, также требует номер версии "gmaven-plugin", а не "версию Maven", которую я пытался ее выдать.

<pluginExecutionFilter>
    <groupId>org.codehaus.gmaven</groupId>
    <artifactId>gmaven-plugin</artifactId>
    <versionRange>[1.5,)</versionRange>
    <goals>
        <goal>testCompile</goal>
        <goal>compile</goal>
    </goals>
</pluginExecutionFilter>

Ответ 2

  • Справка → Установить новое программное обеспечение

    • Установите Groovy Компилятор 2.2/2.1.

    • Установить интеграцию Groovy -Eclipse M2E

  • Окно → Настройки → Maven → Отображения жизненного цикла → Открыть метаданные сопоставлений жизненного цикла рабочей области

Добавьте следующий xml:

<?xml version="1.0" encoding="UTF-8"?>
<lifecycleMappingMetadata>
    <pluginExecutions>
        <pluginExecution>
            <pluginExecutionFilter>
                <groupId>org.codehaus.gmaven</groupId>
                <artifactId>gmaven-plugin</artifactId>
                <versionRange>[1.3,)</versionRange>
                <goals>
                    <goal>compile</goal>
                    <goal>testCompile</goal>
                </goals>
            </pluginExecutionFilter>
            <action>
                <execute />
            </action>
        </pluginExecution>
    </pluginExecutions>
</lifecycleMappingMetadata>
  1. Перезагрузите сопоставления Lifecycle и вызовите обновление projekt в своем проекте maven. (ALT + F5)

Ответ 3

Вам может потребоваться соединитель M2E для понимания модуля maven-compiler-plugin с использованием компилятора Eclipse (JDT).

Выберите "обнаружить соединители" и выберите разъем M2E для компилятора Eclipse JDT, предоставленный JBoss, или установите его вручную.

Разъем M2E для Eclipse JDT Compiler 1.0.1.201209200903

Вам также может быть предложен разъем Groovy - возможно, он использует подобную технологию под капотом? - но если вы не используете Groovy, вероятно, нет смысла устанавливать такую ​​интеграцию.