首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >插件执行不在生命周期配置范围内(JBossas 7 EAR原型)

插件执行不在生命周期配置范围内(JBossas 7 EAR原型)
EN

Stack Overflow用户
提问于 2012-02-05 00:47:58
回答 9查看 234.2K关注 0票数 124

我正在使用Eclipse3.7 Indigo和Maven M2E插件1.0.100。

使用JBoss 7.x JavaEE 6 EAR原型,EAR的pom给出了这个错误:

未包含在生命周期配置中的应用程序插件执行: org.apache.maven.plugins:maven-ear-plugin:2.6:generate-application-xml (执行:默认生成应用程序-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>
EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2012-02-05 00:58:47

这是一段时间之前引入的M2E插件的一个“特性”。这与Maven插件没有直接关系,但也会发生在大多数其他JBoss插件中。

如果您在pom中定义了插件执行(如maven-ear-plugin:generate-application-xml的执行),则还需要为M2E添加额外的配置信息,以告诉M2E在Eclipse中运行构建时要做什么,例如,插件执行是否应由M2E忽略或执行,是否也应对增量构建执行,...如果缺少该信息,M2E将通过显示以下错误消息对其进行警告:

“插件执行不在生命周期配置范围内”

有关更详细的解释和一些示例配置,请参阅此处,这些配置需要添加到pom中,以消除该错误:

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

票数 139
EN

Stack Overflow用户

发布于 2013-09-04 17:39:52

无论如何,为时已晚,但我的解决方案很简单,就是右键单击Eclipse中的错误消息,然后为每个出现此类错误的pom选择Quick Fix >> Ignore

票数 45
EN

Stack Overflow用户

发布于 2014-10-19 12:36:46

Eclipse已经了解了增量builds.This的概念,它非常有用,因为它节省了大量时间。

这个有什么用?

假设您刚刚更改了单个.java文件。增量构建器将能够编译代码,而不必重新编译所有内容(这将需要更多时间)。

Maven Plugins有什么问题吗

大多数maven插件都不是为增量构建而设计的,因此它给m2e带来了麻烦。m2e不知道插件的目标是关键的还是无关紧要的。如果它只是在单个文件发生变化时执行每个插件,这将花费大量时间。

这就是为什么m2e依赖于元数据信息来确定应该如何处理执行。m2e已经提出了不同的选项来提供此元数据信息,并且首选顺序如下(从高到低)

project

  • parent,祖父母的
  1. pom.xml文件等pom.xml文件
  2. m2e 1.2+工作区maven m2e 1.1+生命周期映射元数据随m2e

提供的生命周期映射元数据

1,2是指在pom文件或其父文件的标签中指定pluginManagement部分。M2E读取此配置以配置project.Below代码片段,指示m2e忽略yuicompressor maven-plugin的jslintcompress目标

<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的jslintcompress目标

<?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)如果您不喜欢这3个选项中的任何一个,您可以使用m2e连接器(扩展),因为maven plugin.The连接器将反过来向m2e提供元数据。您可以在此link中看到连接器中的元数据信息示例。您可能已经注意到,元数据引用了一个配置器。这仅仅意味着m2e将把责任委派给由扩展author.The配置器提供的特定java类,该类可以配置项目(例如,添加额外的源文件夹等),并决定是否在增量构建期间执行实际的maven插件(如果在配置器中没有得到适当的管理,可能会导致无休止的项目构建)。

有关配置器(link1link2)的示例,请参阅这些链接。因此,如果插件是可以通过外部连接器管理的,那么您可以安装它。m2e维护由其他developers.This提供的此类连接器的列表,称为发现目录。如果您还没有通过任何选项(1-6)执行的生命周期映射元数据,并且发现目录有一些可以管理执行的扩展,那么m2e将提示您安装连接器。

下图显示了m2e如何提示您安装build-helper-maven-plugin的连接器。

5)m2e鼓励插件作者支持增量构建,并在maven-plugin中提供生命周期映射itself.This将意味着用户不必使用任何额外的生命周期映射,或者connectors.Some插件作者拥有already implemented this

6)默认情况下,m2e保存了大多数常用插件的生命周期映射元数据,比如maven编译器插件和许多其他插件。

现在回到问题:您可能只需要在1、2或3中为给您带来麻烦的特定目标提供一个忽略生命周期映射。

票数 32
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9142533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档