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

时间:2015-05-05 21:14:54

标签: eclipse maven m2eclipse lifecycle 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)

我希望Eclipse在适当的时候执行这些生命周期阶段,但我不知道该怎么做。当我选择Eclipse的建议......

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

我在提示“选择要放置忽略的位置”时选择了父pom.xml文件,但是,当我在Eclipse编辑器中查看子pom.xml文件时,错误不会消失。如何映射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文件时,&#34;插件执行不会被生命周期配置&#34;错误仍然像以前一样。

1 个答案:

答案 0 :(得分:11)

M2Eclipse(Eclipse的Maven集成插件)将Maven的默认phasegoals映射并执行到内部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'进行配置。

  

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

     

[...]

     

忽略选项,顾名思义,告诉M2Eclipse默默地忽略插件执行。

     

[...]

     

执行选项告诉m2e在Eclipse工作区完全或增量构建中执行操作。

委托给项目配置器意味着Eclipse Marketplace中有适配器Eclipse插件。适配器插件以更具Maven插件的方式执行phasegoals

真实设置(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插件,在SCM中移动lifecycle-mapping-metadata.xml(git,svn,cvs ...)。

修改

添加插件的所有目标,可能还有其他插件可以避免这些错误。请仔细阅读其他goal或插件的错误消息。

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

在工作区中的Maven项目上单击鼠标右键,然后选择 Maven&gt;更新项目...... 。选择/ all Maven项目并激活以下复选框:

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

修改

[1] Maven设置对话框位于文件&gt;窗口&gt;偏好&gt; Maven&gt; Lifecycle Mappings 直到Exclipse Oxygen。