我在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;错误仍然像以前一样。
答案 0 :(得分:11)
M2Eclipse(Eclipse的Maven集成插件)将Maven的默认phase
和goals
映射并执行到内部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插件的方式执行phase
和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>
ProTip:您是否有更多项目并且一直使用一组Maven插件,在SCM中移动lifecycle-mapping-metadata.xml
(git,svn,cvs ...)。
修改强>
添加插件的所有目标,可能还有其他插件可以避免这些错误。请仔细阅读其他goal
或插件的错误消息。
在lifecycle-mapping-metadata.xml
保存更改后,您必须重新加载 Maven设置对话框[1]中的内容,并更新工作区中所有基于Maven的项目。
在工作区中的Maven项目上单击鼠标右键,然后选择 Maven&gt;更新项目...... 。选择/ all Maven项目并激活以下复选框:
修改强>
[1] Maven设置对话框位于文件&gt;窗口&gt;偏好&gt; Maven&gt; Lifecycle Mappings 直到Exclipse Oxygen。