15

为什么我的 Maven 构建在命令行上运行得非常好,但是当我在 Eclipse 中运行时,它需要我将此部分添加到我的 pom.xml 中,否则我会收到此错误:

Plugin execution not covered by lifecycle configuration
: org.apache.maven.plugins:maven-compiler-plugin:3.1:testCompile
 (execution: default-testCompile, phase: test-compile)

这发生在'maven-compiler-plugin'插件周围不是很奇怪吗?我在谷歌的任何地方都找不到像这样的另一个问题,尽管我找到了很多关于 3rd 方插件的修复建议。我进行了大量的研究和搜索,但没有找到对此的解释,甚至从这里也没有。

解决此问题所需的 pom.xml:

<!--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-compiler-plugin</artifactId>
                        <versionRange>[3.1,)</versionRange>
                        <goals>
                            <goal>testCompile</goal>
                        </goals>
                    </pluginExecutionFilter>
                    <action> 
                        <ignore></ignore>
                    </action>
                </pluginExecution>
            </pluginExecutions>
        </lifecycleMappingMetadata>
    </configuration>
</plugin>

而且,如果您想查看我的源代码,这是我在 GitHub 上的简单项目。

4

3 回答 3

7

我终于解决了。似乎我在上面发布的“pluginManagement”部分通常是 Eclipse Maven 项目所必需的,尽管我拒绝了它,即使我在互联网上找不到任何文档明确提到这一点。

此外,生命周期排除部分中的“versionRange”似乎也需要“gmaven-plugin”的版本号,而不是我在上面试图给出的“Maven 版本”。

<pluginExecutionFilter>
    <groupId>org.codehaus.gmaven</groupId>
    <artifactId>gmaven-plugin</artifactId>
    <versionRange>[1.5,)</versionRange>
    <goals>
        <goal>testCompile</goal>
        <goal>compile</goal>
    </goals>
</pluginExecutionFilter>
于 2013-04-12T15:11:02.250 回答
2
  1. 帮助 -> 安装新软件

    • 安装Groovy 编译器 2.2 / 2.1 功能

    • 安装Groovy-Eclipse M2E 集成

  2. 窗口 -> 首选项 -> Maven -> 生命周期映射 -> 打开工作区生命周期映射元数据

添加以下xml:

<?xml version="1.0" encoding="UTF-8"?>
<lifecycleMappingMetadata>
    <pluginExecutions>
        <pluginExecution>
            <pluginExecutionFilter>
                <groupId>org.codehaus.gmaven</groupId>
                <artifactId>gmaven-plugin</artifactId>
                <versionRange>[1.3,)</versionRange>
                <goals>
                    <goal>compile</goal>
                    <goal>testCompile</goal>
                </goals>
            </pluginExecutionFilter>
            <action>
                <execute />
            </action>
        </pluginExecution>
    </pluginExecutions>
</lifecycleMappingMetadata>
  1. 重新加载生命周期映射并在您的 maven 项目上调用项目更新。(ALT+F5)
于 2015-01-14T09:32:13.950 回答
2

您可能需要 M2E“连接器”来理解使用 Eclipse (JDT) 编译器的 maven-compiler-plugin。

选择“发现连接器”,选择JBoss提供的Eclipse JDT编译器的M2E连接器,或者手动安装。

Eclipse JDT 编译器 1.0.1.201209200903 的 M2E 连接器

您可能还会获得一个 Groovy 连接器——也许它在底层使用了类似的技术?-- 但除非您使用 Groovy,否则安装这样的集成可能没有意义。

于 2015-01-27T01:19:43.933 回答