M2e 不支持 maven- 依赖-插件(目标是“复制-依赖”,“解包”)

我有一个相当简单的 Maven 项目:

<project>
<dependencies>
...
</dependencies>


<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/dependencies</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

然而,我在 m2eclipse 中得到了以下错误:

Description Resource    Path    Location    Type
maven-dependency-plugin (goals "copy-dependencies", "unpack") is not supported by m2e. pom.xml  /jasperreports-test line 60 Maven Project Build Lifecycle Mapping Problem

为什么我关心 m2eclipse 是否“支持”这个任务?玛文知道,这才是我真正关心的。我如何让我的项目中的这个错误消失?

133873 次浏览

这似乎是一个已知的问题。你可以指示 m2e 忽略这一点。

选项1: pom.xml

<build/>标签中添加以下内容:

<pluginManagement>
<plugins>
<!-- Ignore/Execute plugin execution -->
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<!-- copy-dependency plugin -->
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<versionRange>[1.0.0,)</versionRange>
<goals>
<goal>copy-dependencies</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins></pluginManagement>

您将需要做 Maven...-> 更新项目配置后,您的项目。

阅读更多: http://wiki.eclipse.org/M2E_plugin_execution_not_covered#m2e_maven_plugin_coverage_status

选项2: 全局 Eclipse 覆盖

为了避免更改 POM 文件,可以通过 Eclipse 设置将忽略重写应用于整个工作区。

将此文件保存在磁盘上的某个位置: https://gist.github.com/maksimov/8906462

Eclipse/Preferences/Maven/Lifecycle Mappings中浏览到这个文件并单击 OK:

Eclipse Settings

如果副本依赖关系、解压缩、打包等对于您的项目很重要,那么您不应该忽略它。您必须将您的 <plugins>包含在使用 Eclipse 靛蓝 SR1(maven 2.2.1)测试的 <pluginManagement>

这是 Eclipse M2E 插件执行不包括在内的 M2E 问题。

要解决这个问题,您所要做的就是映射它不能识别的生命周期,并指示 M2E 执行它。

你应该在你的 plugins后面,在 build里面加上这个。这将消除错误,并使 M2E 识别 maven-dependency-plugin的目标 copy-depencies,并使 POM 按预期工作,每次 Eclipse 构建 POM 时都将依赖项复制到文件夹中。如果只想忽略该错误,那么就将 <execute />更改为 <ignore />。没有必要把你的 maven-dependency-plugin封闭到 pluginManagement,就像之前建议的那样。

<pluginManagement>
<plugins>
<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-dependency-plugin</artifactId>
<versionRange>[2.0,)</versionRange>
<goals>
<goal>copy-dependencies</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute />
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>

我知道这是老职位,但我今天与这个问题也斗争,我使用的模板从这个页面: http://maven.apache.org/plugins/maven-dependency-plugin/usage.html

<project>
[...]
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.7</version>
<executions>
<execution>
<id>copy</id>
<phase>package</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>[ groupId ]</groupId>
<artifactId>[ artifactId ]</artifactId>
<version>[ version ]</version>
<type>[ packaging ]</type>
<classifier> [classifier - optional] </classifier>
<overWrite>[ true or false ]</overWrite>
<outputDirectory>[ output directory ]</outputDirectory>
<destFileName>[ filename ]</destFileName>
</artifactItem>
</artifactItems>
<!-- other configurations here -->
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
[...]
</project>

m2e1.3.1环境下一切正常。

当我试图使用

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/dependencies</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>

我还得到了 m2e错误。

尽管上面的答案来自 CaioToon,但是我在使这个程序开始工作时仍然存在问题。

经过多次尝试,终于成功了。 我粘贴我的最终版本在这里-希望它将有利于其他人。

    <build>
<plugins>
<!--
Copy all Maven Dependencies (-MD) into libMD/ folder to use in classpath via shellscript
-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
<executions>
<execution>
<id>copy</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/libMD</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
<!--
Above maven-dependepcy-plugin gives a validation error in m2e.
To fix that, add the plugin management step below. Per: http://stackoverflow.com/a/12109018
-->
<pluginManagement>
<plugins>
<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-dependency-plugin</artifactId>
<versionRange>[2.0,)</versionRange>
<goals>
<goal>copy-dependencies</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute />
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>

我在 Eclipse 中加载 Hadoop 项目时遇到了同样的问题。我尝试了上面的解决方案,我相信它可能在 Eclipse Kepler 中工作... 甚至不再确定(尝试了太多的东西)。

考虑到我遇到的所有问题,我决定转向 EclipseLuna,上面的解决方案对我来说不起作用。

还有一篇文章建议将... 标签改为包装。我开始这样做,它将“清除”错误... 然而,我开始认为,改变会咬我以后-我不是一个专家在 Maven。

幸运的是,我找到了消除所有错误的方法。转到 Window-> Preferences-> Maven-> Error/Warnings,并将“ Plugin execute not cover by life Cycle...”选项更改为“ Ignore”。希望能有帮助。

另一个选项是导航到问题标签,右键单击错误,单击应用快速修复。应该生成忽略的 xml 代码并应用它。给你的文件。

要使其正常工作,您可以为 maven 依赖项插件安装 m2e 连接器,而不是忽略它:
Https://github.com/ianbrandt/m2e-maven-dependency-plugin

下面是您在 Eclipse 中的实现方法:

  1. 转到 Window/Preferences/Maven/Discovery/
  2. 输入目录 URL: http://download.eclipse.org/technology/m2e/discovery/directory-1.4.xml
  3. 单击“打开目录”
  4. 选择 m2e-maven- 依赖-插件
  5. 好好享受