我正在使用Eclipse 3.7 Indigo和Maven M2E Plugin 1.0.100。
使用JBoss 7.x JavaEE 6 EAR原型,EAR的pom给了我这个错误:
生命周期配置未涵盖插件执行: org.apache.maven.plugins:Maven的耳插件:2.6:生成的应用程序的XML (执行:default-generate-application-xml,阶段: 生成资源)
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>2.6</version>
<configuration>
<!-- Tell Maven we are using Java EE 6 -->
<version>6</version>
<!-- Use Java EE ear libraries as needed. Java EE ear libraries
are in easy way to package any libraries needed in the ear, and automatically
have any modules (EJB-JARs and WARs) use them -->
<defaultLibBundleDir>lib</defaultLibBundleDir>
<modules></modules>
</configuration>
<plugin>
答案 0 :(得分:136)
这是一个&#34;功能&#34;之前介绍过的M2E插件。它与JBoss EAR插件没有直接关系,但也适用于大多数其他Maven插件。
如果您在pom
中定义了插件执行(就像maven-ear-plugin:generate-application-xml
的执行一样),您还需要为M2E添加额外的配置信息,告诉M2E在构建运行时该怎么做在Eclipse中,例如如果插件执行被M2E忽略或执行,是否也应该为增量构建执行,...如果缺少该信息,M2E会通过显示以下错误消息来抱怨:
&#34;生命周期配置未涵盖插件执行&#34;
请点击此处查看更详细的说明以及需要添加到pom的一些示例配置,以避免错误消失:
https://www.eclipse.org/m2e/documentation/m2e-execution-not-covered.html
答案 1 :(得分:43)
无论如何,为时已晚,但我的解决方案很简单,右键单击Eclipse中的错误消息并选择Quick Fix&gt;&gt;忽略每个有这种错误的pom
答案 2 :(得分:29)
Eclipse已经有了增量构建的概念。这非常有用,因为它节省了大量时间。
这是多么有用
假设你刚刚更改了一个.java文件。增量构建器将能够编译代码而无需重新编译所有内容(这将花费更多时间)。
现在Maven插件的问题是什么
大多数maven插件都不是为增量构建而设计的,因此会给m2e带来麻烦。 m2e不知道插件目标是否至关重要或者是否无关紧要。如果它只是在单个文件发生变化时执行每个插件,那么它将花费大量时间。
这就是m2e依赖元数据信息来确定如何处理执行的原因。 m2e提供了不同的选项来提供这种元数据信息,优先顺序如下(从最高到最低)
1,2指的是在你的pom文件或其任何父母的标签中指定pluginManagement部分。 M2E读取此配置以配置项目.Below片段指示m2e忽略yuicompressor-maven-plugin的jslint
和compress
目标
<pluginManagement>
<plugins>
<!--This plugin's 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>net.alchim31.maven</groupId>
<artifactId>yuicompressor-maven-plugin</artifactId>
<versionRange>[1.0,)</versionRange>
<goals>
<goal>compress</goal>
<goal>jslint</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
3)如果您不希望使用此元数据污染您的pom文件,则可以将其存储在外部XML文件中(选项3)。下面是一个示例映射文件,它指示m2e忽略yuicompressor-maven-plugin的jslint
和compress
目标
<?xml version="1.0" encoding="UTF-8"?>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>net.alchim31.maven</groupId>
<artifactId>yuicompressor-maven-plugin</artifactId>
<versionRange>[1.0,)</versionRange>
<goals>
<goal>compress</goal>
<goal>jslint</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore/>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
4)如果您不喜欢这三个选项中的任何一个,您可以使用m2e连接器(扩展名)作为maven插件。连接器将依次为m2e提供元数据。您可以在此link的连接器中查看元数据信息的示例。您可能已经注意到元数据引用了配置程序。这只是意味着m2e会将责任委托给扩展作者提供的特定java类。配置程序可以配置项目(比如说添加其他源文件夹等)并决定是否在增量构建期间执行实际的maven插件(如果在配置器中没有妥善管理,它可以导致无休止的项目构建)
请参阅这些链接以获取配置示例(link1,link2)。因此,如果插件是可以通过外部连接器管理的东西,那么您可以安装它。 m2e维护着由其他开发人员提供的此类连接器的列表。这被称为发现目录。 m2e将提示您安装连接器,如果您还没有任何生命周期映射元数据通过任何选项(1-6)执行,并且发现目录有一些可以管理执行的扩展。
下图显示了m2e如何提示您为build-helper-maven-plugin安装连接器。 。
5)m2e鼓励插件作者在maven-plugin本身内支持增量构建和提供生命周期映射。这意味着用户不必使用任何其他生命周期映射或连接器。一些插件作者{ {3}}
6)默认情况下m2e保存大多数常用插件的生命周期映射元数据,如maven-compiler-plugin和许多其他插件。
现在回到问题:您可能只是为1,2或3提供忽略生命周期映射,以便为您创建麻烦。
答案 3 :(得分:14)
一个很好的解决方法,提醒您m2e可以更好地配置,而项目没有继承误报错误标记,只是将这些错误降级为警告:
窗口 - &gt;偏好 - &gt; Maven - &gt;错误/警告 - &gt;生命周期配置未涵盖的插件执行=警告
答案 4 :(得分:12)
我试图在清理后立即执行特定的插件,即后清理(默认为清洁阶段)。这对我来说是eclipse indigo。刚添加后清理解决了我的问题。
<executions>
<execution>
<configuration>
</configuration>
<phase>post-clean</phase>
<goals>
<goal>update-widgetset</goal>
</goals>
</execution>
</executions>
答案 5 :(得分:2)
通过应用此解决方案,我能够通过Eclipse Kepler 4.3中的maven-antrun-plugin和jaxb2-maven-plugin解决同样的问题:
http://wiki.eclipse.org/M2E_plugin_execution_not_covered#Eclipse_4.2_add_default_mapping
所以%elipse_workspace_name%/。metadata / .plugins / org.eclipse.m2e.core / lifecycle-mapping-metadata.xml的内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<versionRange>1.3</versionRange>
<goals>
<goal>run</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<versionRange>1.2</versionRange>
<goals>
<goal>xjc</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
*必须重启Eclipse以查看错误消失。
答案 6 :(得分:1)
从Maven Eclipse(m2e)版本0.12起,所有Maven生命周期目标必须映射到已安装的m2e扩展。在这种情况下,maven-ear-plugin
有一个未映射的目标default-generate-application-xml
。
您只需按照此处的说明排除未映射的生命周期目标:
https://wiki.eclipse.org/M2E_plugin_execution_not_covered
或者,只需右键单击Eclipse中的错误消息并选择Quick Fix
- &gt; Ignore for every pom with such errors
。
忽略生命周期目标时应该小心:通常目标会做一些有用的事情,如果你将它们配置为在Eclipse中被忽略,你可能会错过重要的构建步骤。您可能还想考虑为未映射的生命周期目标添加对Maven Eclipse EAR扩展的支持。
答案 7 :(得分:0)
在Jan的答案中解释的机制我指示m2e插入忽略目标“generate-application-xml”。这消除了错误,似乎工作,因为m2e创建了application.xml。
所以基本上错误迫使我们决定在m2e插件的控制下,当Maven构建在Eclipse内部运行时,哪个机制负责生成application.xml。我们已经决定m2e负责。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>2.6</version>
<configuration>
<version>6</version>
<defaultLibBundleDir>lib</defaultLibBundleDir>
</configuration>
</plugin>
</plugins>
<pluginManagement>
<plugins>
**<!-- This plugin's 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-ear-plugin</artifactId>
<versionRange>[2.1,)</versionRange>
<goals>
<goal>generate-application-xml</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore></ignore>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>**
</plugins>
</pluginManagement>
</build>
答案 8 :(得分:0)
您需要了解M2E_plugin_execution_not_covered中的内容,并按照以下步骤操作:
<ignore/>
标记下显示为<action>
错误。例如:对于write-project-properties错误,请在lifecycle-mapping-metadata.xml文件的<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>
您应该看到将来任何项目都没有错误。
答案 9 :(得分:0)
即使问题太旧了,但我想分享对我有用的解决方案,因为我已经检查过这个错误的所有内容。这是一种痛苦,我花了两天时间尝试,最后解决方案是:
更新eclipse中的M2e插件
清理并再次构建