Картографирование жизненного цикла m2e не найдено - PullRequest
56 голосов
/ 14 сентября 2011

Я пытаюсь использовать решение , описанное здесь , чтобы решить надоедливое «выполнение плагина, не охватываемое конфигурацией жизненного цикла: org.codehaus.mojo: build-helper-maven-plugin: 1.7: add-source (выполнение: по умолчанию, фаза: генерировать-источники) ", когда я помещаю следующий плагин в мой файл pom.xml:

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
    <execution>
        <phase>generate-sources</phase>
        <goals><goal>add-source</goal></goals>
        <configuration>
            <sources>
                <source>src/bootstrap/java</source>
            </sources>
        </configuration>
    </execution>
</executions>
</plugin>

Но когда я запускаю mvn clean install, я получаю следующее:

Причина: POM 'org.eclipse.m2e: отображение жизненного цикла' не найдено в хранилище: невозможно загрузить артефакт из любого хранилища

Кто-нибудь знает, как порадовать m2e и maven?

Ответы [ 9 ]

108 голосов
/ 15 сентября 2011

Плагин org.eclipse.m2e:lifecycle-mapping на самом деле не существует.Его следует использовать из раздела <build><pluginManagement> вашего pom.xml.Таким образом, это не разрешается Maven, но может быть прочитано m2e.

Но более практичным решением вашей проблемы было бы установить соединитель помощника построения m2e в eclipse.Вы можете установить его из Window> Preferences> Maven> Discovery> Open Catalog.Таким образом, build-helper-maven-plugin:add-sources будет вызываться в Eclipse без необходимости менять ваш pom.xml.

10 голосов
/ 15 июля 2012

Попробуйте использовать раздел build/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.bsc.maven</groupId>
                                <artifactId>maven-processor-plugin</artifactId>
                                <versionRange>[2.0.2,)</versionRange>
                                <goals>
                                    <goal>process</goal>
                                </goals>
                            </pluginExecutionFilter>
                            <action>
                                <execute />
                            </action>
                        </pluginExecution>
                    </pluginExecutions>                         
                </lifecycleMappingMetadata>
            </configuration>
        </plugin>
    </plugins>
</pluginManagement>

Вот пример для генерации манифеста пакета во время инкрементальной компиляции в Eclipse:

<build>
    <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.felix</groupId>
                                    <artifactId>maven-bundle-plugin</artifactId>
                                    <versionRange>[1.0.0,)</versionRange>
                                    <goals>
                                        <goal>manifest</goal>
                                    </goals>
                                </pluginExecutionFilter>
                                <action>
                                    <execute />
                                </action>
                            </pluginExecution>
                        </pluginExecutions>
                    </lifecycleMappingMetadata>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.apache.felix</groupId>
            <artifactId>maven-bundle-plugin</artifactId>
            <version>2.3.7</version>
            <extensions>true</extensions>
            <configuration>
                <instructions>
                </instructions>
            </configuration>
            <executions>
                <execution>
                    <id>manifest</id>
                    <phase>process-classes</phase>
                    <goals>
                        <goal>manifest</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

versionRange требуется, если пропущенный m2e (по состоянию на 1.1.0) вызовет исключение NullPointerException.

8 голосов
/ 14 февраля 2012

Вы можете использовать этот фиктивный плагин:

mvn archetype:generate -DgroupId=org.eclipse.m2e -DartifactId=lifecycle-mapping -Dversion=1.0.0 -DarchetypeArtifactId=maven-archetype-mojo

После создания проекта установите / разверните его.

6 голосов
/ 05 февраля 2014

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

<project>
  ...
  <profiles>
    ...
    <profile>
      <id>m2e</id>
      <!-- This profile is only active when the property "m2e.version"
        is set, which is the case when building in Eclipse with m2e. -->
      <activation>
        <property>
          <name>m2e.version</name>
        </property>
      </activation>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.eclipse.m2e</groupId>
              <artifactId>lifecycle-mapping</artifactId>
              <version>1.0.0</version>
              <configuration>
                <lifecycleMappingMetadata>
                  <pluginExecutions>
                    <pluginExecution>
                      <pluginExecutionFilter>
                        <groupId>...</groupId>
                        <artifactId>...</artifactId>
                        <versionRange>[0,)</versionRange>
                        <goals>
                          <goal>...</goal>
                        </goals>
                      </pluginExecutionFilter>
                      <action>

                        <!-- either <ignore> XOR <execute>,
                          you must remove the other one. -->

                        <!-- execute: tells m2e to run the execution just like command-line maven.
                          from m2e's point of view, this is not recommended, because it is not
                          deterministic and may make your eclipse unresponsive or behave strangely. -->
                        <execute>
                          <!-- runOnIncremental: tells m2e to run the plugin-execution
                            on each auto-build (true) or only on full-build (false). -->
                          <runOnIncremental>false</runOnIncremental>
                        </execute>

                        <!-- ignore: tells m2eclipse to skip the execution. -->
                        <ignore />

                      </action>
                    </pluginExecution>
                  </pluginExecutions>
                </lifecycleMappingMetadata>
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>
    ...
  </profiles>
  ...
</project>
3 голосов
/ 16 октября 2013

У меня была такая же проблема, где:

Не найдены записи рынка для обработки build-helper-maven-plugin: 1.8: add-source в Eclipse. Пожалуйста, смотрите справку для получения дополнительной информации.

и нажатие кнопки «Окно»> «Установки»> «Maven»> «Обнаружение»> «Открыть каталог» сообщит об отсутствии соединения.

Обновление с 7u40 до 7u45 на Centos 6.4 и OSX решает проблему.

3 голосов
/ 04 января 2012

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

https://bugs.eclipse.org/bugs/show_bug.cgi?id=367870

1 голос
/ 09 января 2017

m2e 1.7 представляет новый синтаксис для метаданных отображения жизненного цикла , который больше не вызывает это предупреждение:

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
    <execution>

        <!-- This executes the goal in Eclipse on project import.
             Other options like are available, eg ignore.  -->
        <?m2e execute?>

        <phase>generate-sources</phase>
        <goals><goal>add-source</goal></goals>
        <configuration>
            <sources>
                <source>src/bootstrap/java</source>
            </sources>
        </configuration>
    </execution>
</executions>
</plugin>
1 голос
/ 14 сентября 2011

Maven пытается загрузить артефакт отображения жизненного цикла m2e, который M2E использует для определения того, как обрабатывать плагины в Eclipse (добавление исходных папок и т. Д.).По какой-то причине этот артефакт не может быть загружен.У вас есть подключение к интернету?Можно ли загрузить другие артефакты из репозиториев?Настройки прокси?

Для получения дополнительной информации от Maven попробуйте включить вывод отладочной информации M2E (флажок Настройки / Maven / Вывод отладки), и она может дать вам более подробную информацию о том, почему ее невозможно загрузить из хранилища.

0 голосов
/ 27 апреля 2015

Это происходит из-за отсутствующей конфигурации плагина (согласно демонстрации vaadin pom.xml комментарий):

Конфигурация этого плагина используется для хранения настроек Eclipse m2e только. Он не влияет на саму сборку Maven.

<pluginManagement>
    <plugins>
        <!--This plugin's configuration is used to store Eclipse m2e ettings 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>com.vaadin</groupId>
                                <artifactId>
                                    vaadin-maven-plugin
                                </artifactId>
                                <versionRange>
                                    [7.1.5,)
                                </versionRange>
                                <goals>
                                    <goal>resources</goal>
                                    <goal>update-widgetset</goal>
                                    <goal>compile</goal>
                                    <goal>update-theme</goal>
                                    <goal>compile-theme</goal>
                                </goals>
                            </pluginExecutionFilter>
                            <action>
                                <ignore></ignore>
                            </action>
                        </pluginExecution>
                    </pluginExecutions>
                </lifecycleMappingMetadata>
            </configuration>
        </plugin>
    </plugins>
</pluginManagement>
...