如何映射Eclipse m2e插件未涵盖的Maven生命周期阶段?

Dav*_*ave 10 eclipse lifecycle m2eclipse maven m2e

我在Mac 10.9.5上使用Eclipse Kepler.我使用m2e Eclipse插件导入了许多Maven项目.所有这些项目都是父母的孩子.当我查看各个子pom.xml文件中的"Overview"时,我看到如下内容:

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)
Run Code Online (Sandbox Code Playgroud)

我希望Eclipse在适当的时候执行这些生命周期阶段,但我不知道如何做到这一点.当我选择Eclipse的建议时......

Permanently mark goal write-project-properties in pom.xml as ignore
Run Code Online (Sandbox Code Playgroud)

我在提示"选择要放置忽略的位置"时选择了父pom.xml文件,但是,当我在Eclipse编辑器中查看子pom.xml文件时,错误不会消失.如何映射m2e未涵盖的生命周期阶段?

编辑:

根据答案,我去了Eclipse - > Preferences - > Maven - > Lifecycle Mappings,点击了"Open Workspace Lifecycle Mappings Metadata",并根据建议编辑了文件......

<?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>
Run Code Online (Sandbox Code Playgroud)

即使在重新启动Eclipse之后,当我打开子pom.xml文件时,"生命周期配置未涵盖的插件执行"错误仍然像以前一样.

bar*_*hel 12

M2Eclipse(Eclipse的Maven集成插件)将默认phase的和goalsMaven 映射和执行到内部Eclipse构建工作流程中.

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

[...]需要明确说明如何处理绑定到项目构建生命周期的"有趣"阶段的所有Maven插件.我们将这些指令称为"项目构建生命周期映射"或简称为"生命周期映射",因为它们定义m2e如何将项目pom.xml文件中的信息映射到Eclipse工作区项目配置和Eclipse工作区构建期间的行为.

可以在每个项目或全局Eclipse安装中解决此错误.

项目构建生命周期映射可以在项目的pom.xml中配置,由Eclipse插件提供,或者默认为m2e附带的常用Maven插件.我们将这些称为"生命周期映射元数据源".

全局Eclipse设置文件lifecycle-mapping-metadata.xml可通过Maven Settings对话框中的"Lifecycle Mappings"进行调用和配置[1].

M2Eclipse使用插件groupId,artifactId,版本范围和目标的组合将插件执行与动作相匹配.有两个基本操作可以指示M2Eclipse与插件执行 - 忽略,执行和委托给项目配置器.

[...]

忽略选项,顾名思义,讲述的m2eclipse悄悄忽略插件运行.

[...]

执行选项告诉M2E执行行动Eclipse工作区完全或增量构建的一部分.

委托给项目配置器意味着Eclipse Marketplace中有适配器Eclipse插件.适配器插件以特定于Maven插件的方式执行phases和goals.

真实的设置(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>
Run Code Online (Sandbox Code Playgroud)

ProTip:你有没有更多项目并且一直使用一组Maven插件,移动lifecycle-mapping-metadata.xmlSCM(git,svn,cvs ......).

编辑

添加插件的所有目标以及可能的其他插件以避免这些错误.请仔细阅读错误消息以获取其他内容goal或插件.

任何保存的更改后,lifecycle-mapping-metadata.xml您必须重新加载 Maven设置对话框[1]中的内容并更新工作区中所有基于Maven的项目.

点击在您的工作空间Maven项目鼠标右键,选择的Maven>更新项目.......选择/ all Maven项目并激活以下复选框:

  • 从pom.xml更新项目配置
  • 从本地文件系统刷新工作区资源
  • 清洁项目

编辑

[1] Maven Settings对话框位于File> Window> Preferences> Maven> Lifecycle Mappings,直到Exclipse Oxygen.