如何解决Spring Data Maven Builds的"生命周期配置未涵盖的插件执行"

And*_*ite 871 eclipse m2eclipse maven spring-data

我正在尝试使用Spring Data和Neo4j.我开始尝试按照主站点链接的本指南.特别是我将我的pom.xml基于"Hello,World!".示例文件.这是我的pom.xml中针对导致问题的插件的剪辑...

<plugin>
<!-- Required to resolve aspectj-enhanced class features -->
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>aspectj-maven-plugin</artifactId>
    <version>1.0</version>
    <configuration>
        <outxml>true</outxml>
        <aspectLibraries>
            <aspectLibrary>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aspects</artifactId>
            </aspectLibrary>
            <aspectLibrary>
                <groupId>org.springframework.data</groupId>
                <artifactId>spring-data-neo4j</artifactId>
            </aspectLibrary>
        </aspectLibraries>
        <source>1.6</source>
        <target>1.6</target>
    </configuration>
    <executions>
        <!-- ERROR HERE IN ECLIPSE SEE BELOW FOR FULL MESSAGE -->
        <execution>
            <goals>
                <goal>compile</goal>
                <goal>test-compile</goal>
            </goals>
        </execution>
    </executions>
    <dependencies>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
            <version>${aspectj.version}</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjtools</artifactId>
            <version>${aspectj.version}</version>
        </dependency>
    </dependencies>
</plugin>
Run Code Online (Sandbox Code Playgroud)

我看到的错误是:

 Multiple annotations found at this line:
    - Plugin execution not covered by lifecycle configuration: org.codehaus.mojo:aspectj-maven-plugin:1.0:compile (execution: default, phase: process-classes)
    - Plugin execution not covered by lifecycle configuration: org.codehaus.mojo:aspectj-maven-plugin:1.0:test-compile (execution: default, phase: process-classes)
Run Code Online (Sandbox Code Playgroud)

我正在运行Eclipse 3.6.2和m2e 0.13.我不是Maven专家,所以如果可能的话,请在答案中说明一点.

我也通过这个更新站点尝试m2e 1.0.0仍然得到相同的错误.

Sim*_*zon 1277

在我遇到类似问题的情况下,不是使用Andrew的修复建议,而是在我将<pluginManagement>标签引入到有问题的pom.xml之后.看起来该错误是由于缺少<pluginManagement>标记造成的.因此,为了避免Eclipse中的异常,需要简单地将所有插件标记括在<pluginManagement>标记内,如下所示:

<build>
    <pluginManagement>
        <plugins>
            <plugin> ... </plugin>
            <plugin> ... </plugin>
                  ....
        </plugins>
    </pluginManagement>
</build>
Run Code Online (Sandbox Code Playgroud)

一旦这个结构到位,错误就会消失.

  • @Andrew我认为这是有效的,因为m2e不是在'pluginManagement`中寻找插件,而只是在`build/plugins`中.在Maven世界中,两者之间存在差异 - 前者定义"如果您碰巧使用此插件,这里是使用的配置",而后者则声明"使用此插件".请参阅[this post](http://stackoverflow.com/questions/10483180/maven-what-is-pluginmanagement)及其前两个答案. (85认同)
  • 我同意@GreenGiant.我尝试了这个解决方案,但它打破了编译,因为在编译之前没有调用aspectj插件. (29认同)
  • 也适合我,但任何人都可以解释为什么? (28认同)
  • Errrr ......看起来这只会起作用,因为它会关闭所有插件......完全取出它们也会有效,但我假设它们在那里是有原因的?在使用这个"修复"之前,Devs应该确保他们完全理解他们在使用maven时所做的事情. (27认同)
  • 对我不起.修复了Eclipse中的错误,但使用jaxws-maven-plugin使用<goal> wsimport打破了WS代码的生成.*"永久标记pom.xml中的目标wsimport在Eclipse构建中被忽略"*似乎在pom.xml中添加了更多内容并修复了m2e. (24认同)
  • 这显然是错误的解决方案,因为它只是禁用所有插件.`pluginManagement`下列出的插件不再执行,只是在使用插件时提供配置.请不要使用此修复程序,因为它只会为您创建新问题... (15认同)
  • 这对我有用.我的pom.xml是由Spring Roo生成的,并且缺少pluginManagement标记.在某些情况下看起来这可能是一个Roo问题...... (6认同)
  • 请小心使用此解决方案。与其他评论一样,它修复了 Eclipse 中的错误,但它禁用了“maven-antrun-plugin”和“grails-maven-plugin”等插件。我选择这个解决方案是因为它有很多赞成票,所以我没有阅读评论中的警告。现在,我不能投反对票。 (3认同)
  • 这**不是**一个解决方案。它只是通过不再显示来忽略错误。唯一的解决方案是**安装**缺少的插件。 (3认同)

And*_*ite 407

真是一团糟.我不记得我在哪里找到了这个,但我必须添加以下内容才能让M2Eclipse感到高兴.更令人遗憾的是,理解为什么需要这个标签并不容易.

<build>
      ... various 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.codehaus.mojo</groupId>
                                    <artifactId>aspectj-maven-plugin</artifactId>
                                    <versionRange>[1.0,)</versionRange>
                                    <goals>
                                        <goal>test-compile</goal>
                                        <goal>compile</goal>
                                    </goals>
                                </pluginExecutionFilter>
                                <action>
                                    <execute />
                                </action>
                            </pluginExecution>
                        </pluginExecutions>
                    </lifecycleMappingMetadata>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
</build>
Run Code Online (Sandbox Code Playgroud)

M2Eclipse插件存在许多其他问题,这些问题根本无法与Spring Data一起使用.最后,我禁用了M2Eclipse,转而支持Apache Eclipse插件.

  • 注意:m2e 1.x可以从"问题"视图中自动执行此操作作为快速修复 (63认同)
  • 是的,<pluginmanagement>东西在<build>下.你会认为m2页面会提到这个小事. (10认同)
  • 谢谢:m2e为我提供了一个它无法识别的插件的'quickfix',除了使用<ignore />而不是<execute />之外,它生成了以上所有内容.它没有提供<execute />选项,它有效!郁闷了! (7认同)
  • 如果您的eclipse无法找到org.eclipse.m2e:lifecycle-mapping插件,因为您将上面的代码段放在pom中错误的插件列表中,它必须在pluginManagement下运行 (6认同)
  • 什么插件存储库托管org.eclipse.m2e:lifecycle-mapping插件? (3认同)
  • 您可能在http://wiki.eclipse.org/M2E_plugin_execution_not_covered上找到了此解决方案. (3认同)
  • @AndrewWhite - 将定义移动到pluginManagement只是隐藏了当前模块中插件的执行.配置生命周期映射插件告诉Eclipse如何以及何时实际运行插件.除非您有其他模块依赖于相关模块,否则将定义移动到pluginManagement与完全删除它是一样的:http://maven.apache.org/pom.html#Plugin_Management (3认同)
  • @Brad:快速修复的问题在于,它会修改项目文件,这些文件必然是存储库中项目的一部分. (2认同)
  • 是的,它是一团糟.幸运的是,使用Eclipse Juno和m2e 1.3,我可以在Eclipse中打开`pom.xml`,左键单击有问题的`execution`标签(正确标记为红色),上下文菜单提示我添加`ignore` Eclipse标记. (2认同)
  • 阅读本文以了解有关答案中的配置的更多信息:http://wiki.eclipse.org/M2E_plugin_execution_not_covered (2认同)

Ved*_*ran 206

解决这个问题的最快方法是(来自Eclipse m2e文档):

  1. 使用快速修复pom.xml中的错误并选择Permanently mark goal run in pom.xml as ignored in Eclipse build- 这将为您生成所需的样板代码.

  2. 之后,只需在生成的配置<ignore/>中用<execute/>标签替换标签,您就完成了:

    <action>
        <execute/>
    </action>
    
    Run Code Online (Sandbox Code Playgroud)

  • 您还可以在执行标记内添加`<runOnIncremental> false | true </ runOnIncremental>`,以使eclipse在增量构建上调用此maven插件. (6认同)
  • 如果你没有将它们标记为"执行",那么eclipse构建将不会运行那些插件执行,但它也可以正常工作. (6认同)
  • 此解决方案也适用于我,但没有必要执行建议的解决方法的步骤2). (4认同)
  • 谢谢,这是真正的解决方案。添加 &lt;pluginManagement&gt; 标签只会禁用插件。 (2认同)

小智 203

在Eclipse Luna 4.4.0中,您可以选择忽略首选项中的此错误

窗口 > 首选项 > Maven > 错误/警告 > 生命周期配置未涵盖插件执行.根据需要选择忽略/警告/错误.

此外,在此错误的快速修复(Ctrl + 1)中,它提供了一个选项,在Eclipse首选项中的Eclipse构建中将目标标记为已忽略(实验性)

这是一种更干净的方式,因为它不会修改你的pom.xml.

您将需要执行Maven > Update项目以在任何其他项目中修复相同的错误.


在STS(Spring-tool-suite)中,您可以选择忽略首选项中的此错误

窗口>首选项> Maven>错误/警告>生命周期配置未涵盖插件执行.根据需要选择忽略/警告/错误.然后.右键单击项目单击Maven并更新项目,然后错误将消失.

  • 理想解决方案 避免pom操纵的副作用, (8认同)
  • 完美的。为我完美地工作。感谢分享。 (2认同)

Tho*_*yer 110

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

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

项目构建生命周期映射配置可以在项目pom.xml中指定,由Eclipse插件提供,并且还有m2e附带的一些常用Maven插件的默认配置.我们将这些称为"生命周期映射元数据源".m2e将为所有在任何映射元数据源中没有生命周期映射的插件执行创建如下所示的错误标记.

Plugin execution not covered by lifecycle configuration:
org.apache.maven.plugins:maven-antrun-plugin:1.3:run
   (execution: generate-sources-input, phase: generate-sources)
Run Code Online (Sandbox Code Playgroud)

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

  • 这是对问题的解释,而不是至少不是我可以采取和使用的解决方案. (88认同)
  • 您自己给出了答案,可以在我链接的页面上找到答案.如果发现错误意味着什么(然后很容易找到解决方法)比盲目复制/粘贴一些片段更重要."没有良心的科学只不过是灵魂的毁灭." (FrançoisRabelais) (53认同)
  • 对不起,但我同意Andrew的意见,使用这个插件远比它应该复杂得多.我正在开始一个新的应用程序,首先我虽然问题是我的pow文件,只是当我尝试一个我知道它应该工作的pow,我看到这个问题是由m2e引起的.对不起,伙计们,但我认为一个好的战俘文件应该只是工作.没有人知道关于一切的一切,我只是想使用这个插件不想知道它是如何工作的. (21认同)
  • 我不得不同意这与Maven宣言的方式相反(可以这么说).它使一个简单的事情变得如此复杂,即使阅读所有相关内容,我也无法让它在一半时间内完成工作.我更愿意,而不是处理一些maven特性,而不是处理不应该绑定到生命周期阶段的插件.如果这是一个临时解决方案,那么很好......但是要修复它,因为它现在已经坏了. (15认同)
  • 这不是Maven的挣扎.从命令行工作构建.它是m2eclipse插件(由Eclipse人建立),它正在喷出错误.我认为问题在于Maven具有与Eclipse不同的构建生命周期,因此他们需要您进行显式映射.这是一个很大的耻辱,因为这意味着你显然永远不会使用POM.你总是要添加这个映射.... (13认同)
  • 尝试理解 Thomas Broyer 链接所指向的所有术语。哎呀,你必须是 Eclipse 插件专家。我不知道从哪里开始。 (2认同)

noi*_*rre 30

m2e 0.13引入了m2e连接器m2e市场,以扩展m2e功能.它就像旧的m2e-extras存储库.

您可以从首选项访问m2e市场:首选项> Maven>发现>打开目录.安装WTP集成为我解决了大多数插件问题.

  • 截至2011年11月,m2e wtp可以在Eclipse Marketplace中找到 (2认同)

kvm*_*006 25

将插件执行的Maven首选项从错误更改为忽略

  • 强烈建议将其作为新的接受的答案。许多其他解决方案将阻止Maven在指定的构建步骤中完全执行插件,而这很少是用户想要的。这通常是配置问题,而不是实际错误。Eclipse的默认值应该是警告,而不是错误。 (2认同)

Dav*_*vid 23

请注意,今天的Eclipse Neon版本系列中提供的M2Eclipse(m2e)版本1.7.0支持用于指定生命周期映射元数据的新语法.结果像这样的样板(这里我们告诉m2e忽略目标):

<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.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <versionRange>[1.5.0,)</versionRange>
                <goals>
                  <goal>exec</goal>
                </goals>
              </pluginExecutionFilter>
              <action>
                <ignore></ignore>
              </action>
            </pluginExecution>
          </pluginExecutions>
        </lifecycleMappingMetadata>
      </configuration>
    </plugin>
  </plugins>
</pluginManagement>
Run Code Online (Sandbox Code Playgroud)

可以在插件的执行节点中用一行替换:

<?m2e ignore?>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

有关详细信息,请参阅发行说明


hto*_*ins 21

作为之前答案的补充 - 如果您不能或不想将所有这些样板添加到项目POM中,我会发现一种解决方法.如果您查看以下位置:

{Eclipse_folder}/plugins/org.eclipse.m2e.lifecyclemapping.defaults_{m2e_version}
Run Code Online (Sandbox Code Playgroud)

您应该找到一个名为的文件lifecycle-mapping-metadata.xml,您可以在其中进行其他答案中描述的相同更改以及未涵盖的M2E插件执行.

  • 您还可以编辑`WORKSPACE/.metadata/.plugins/org.eclipse.m2e.core/lifecycle-mapping-metadata.xml`文件,而不是摆弄jar.更多细节可以在`Preferences> Maven> Lifecycle Mappings`下找到.此外,如果您选择快速修复"标记目标xxxxx在Eclipse构建中忽略Eclipse偏好(实验)",它将向上述文件添加所有必需的更改. (6认同)

Kri*_*aan 17

Eclipse v3.7(Indigo)和m2eclipse作为我的Maven插件遇到了同样的问题.通过在插件定义中明确说明执行阶段,可以轻松解决错误.所以我的pom看起来像这样:

<project>
    ...
    <build>
        ...
        <plugins>
            <plugin>

                <groupId>org.codehaus.mojo</groupId>
                <artifactId>buildnumber-maven-plugin</artifactId>
                <version>1.0</version>

                <configuration>
                    <timestampFormat>yyyy-MM-dd_HH-mm-ss</timestampFormat>
                </configuration>

                <executions>
                    <execution>
                        *<phase>post-clean</phase>*
                        <goals>
                            <goal>create-timestamp</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
        ...
Run Code Online (Sandbox Code Playgroud)


Hen*_*wan 10

  1. 转到帮助>安装新软件...
  2. 使用此软件存储库

    确保选中"在安装期间联系所有更新站点以查找所需的软件".

  3. 安装AJDT m2e配置器

来源:升级SpringSource Tool Suite 2.8.0的Maven集成(Andrew Eisenberg)

如果您没有安装ADJT,它应自动安装,但如果没有安装,则首先从"Indigo更新站点"(根据您的Eclipse版本)安装AspectJ开发工具(ADJT).

有关AspectJ Development Tools站点的更多信息.


Til*_*ann 9

我遇到了与indigo相同的问题以及需要从XSD生成Java源代码的项目.
我可以通过提供缺少的生命周期映射来修复它,如本页所述


fat*_*kin 9

转到workspace/rtc-ws/.metadata/.plugins/org.eclipse.m2e.core/lifecycle-mapping-metadata.xml然后创建lifecycle-mapping-metadata.xml文件并粘贴到下面并重新加载配置如下

如果你正在使用Eclipse 4.2并且遇到映射问题并且不会把问题搞乱,请pom.xml创建新文件lifecycle-mapping-metadata.xml配置它Windows -> Preferences -> Lifecycle mapping (不要忘记在每次更改此文件后按Reload工作区生命周期映射元数据!).这是基于的例子eclipse/plugins/org.eclipse.m2e.lifecyclemapping.defaults_1.2.0.20120903-1050.jar/lifecycle-mapping-metadata.xml

<?xml version="1.0" encoding="UTF-8"?>
<lifecycleMappingMetadata>
    <pluginExecutions>
        <pluginExecution>
            <pluginExecutionFilter>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>buildnumber-maven-plugin</artifactId>
                <goals>
                    <goal>create-timestamp</goal>
                </goals>
                <versionRange>[0.0,)</versionRange>
            </pluginExecutionFilter>
            <action>
                <ignore />
            </action>
        </pluginExecution>

        <pluginExecution>
            <pluginExecutionFilter>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <goals>
                    <goal>list</goal>
                </goals>
                <versionRange>[0.0,)</versionRange>
            </pluginExecutionFilter>
            <action>
                <ignore />
            </action>
        </pluginExecution>

        <pluginExecution>
            <pluginExecutionFilter>
                <groupId>org.zeroturnaround</groupId>
                <artifactId>jrebel-maven-plugin</artifactId>
                <goals>
                    <goal>generate</goal>
                </goals>
                <versionRange>[0.0,)</versionRange>
            </pluginExecutionFilter>
            <action>
                <ignore />
            </action>
        </pluginExecution>

        <pluginExecution>
            <pluginExecutionFilter>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>gwt-maven-plugin</artifactId>
                <goals>
                    <goal>compile</goal>
                </goals>
                <versionRange>[0.0,)</versionRange>
            </pluginExecutionFilter>
            <action>
                <ignore />
            </action>
        </pluginExecution>

        <pluginExecution>
            <pluginExecutionFilter>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <goals>
                    <goal>copy-dependencies</goal>
                    <goal>unpack</goal>
                </goals>
                <versionRange>[0.0,)</versionRange>
            </pluginExecutionFilter>
            <action>
                <ignore />
            </action>
        </pluginExecution>

        <pluginExecution>
            <pluginExecutionFilter>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-antrun-plugin</artifactId>
                <versionRange>[1.7,)</versionRange>
                <goals>
                    <goal>run</goal>
                </goals>
            </pluginExecutionFilter>
            <action>
                <ignore />
            </action>
        </pluginExecution>


        <pluginExecution>
            <pluginExecutionFilter>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
                <versionRange>[2.8,)</versionRange>
                <goals>
                    <goal>check</goal>
                </goals>
            </pluginExecutionFilter>
            <action>
                <ignore />
            </action>
        </pluginExecution>

    </pluginExecutions>
</lifecycleMappingMetadata>
Run Code Online (Sandbox Code Playgroud)


Che*_*ech 8

在SpringSource Tool Suite 2.8.0的博客文章升级Maven集成之后修复了它.

按照" 噢......我的项目不再构建 " 一节中的建议进行操作.即使它是用于SpringSource Tool Suite,我也用它来修复常规的Eclipse安装.我没有必要修改我的pom文件.


Oh *_*oon 5

使用m2e 0.12,Sonatype的最新版本.


小智 5

由于缺少m2e连接器,在氖灯上也会发生此错误。解决方案:悬停错误并选择-发现新的m2e连接器。

它将安装新的连接器。