Eclipse m2e不支持maven依赖插件(目标“复制依赖项”、“解包”)

Eclipse m2e不支持maven依赖插件(目标“复制依赖项”、“解包”),eclipse,maven,m2eclipse,Eclipse,Maven,M2eclipse,我有一个相当简单的Maven项目: ... org.apache.maven.plugins maven依赖插件 2.4 复制依赖项 包裹 复制依赖项 ${project.build.directory}/dependencies 但是,我在m2eclipse中遇到以下错误: Description Resource Path Location Type maven-dependency-plugin (goals "copy-dependencies", "unpack"

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


...
org.apache.maven.plugins
maven依赖插件
2.4
复制依赖项
包裹
复制依赖项
${project.build.directory}/dependencies
但是,我在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不“支持”这个任务,我为什么要在意呢?Maven有,这就是我真正关心的。我怎样才能消除项目中的这个错误

这似乎是一个众所周知的问题。您可以指示m2e忽略这一点

选项1:pom.xml

标记中添加以下内容:

<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>

org.eclipse.m2e

选项2:全局Eclipse覆盖

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

将此文件保存在磁盘上的某个位置:

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


如果复制依赖项、解包、打包等对您的项目很重要,您不应该忽略它。您必须将您的
放在使用Eclipse Indigo SR1、maven 2.2.1测试的
中,这是Eclipse的M2E问题

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

您应该在
插件
之后,在
构建
中添加此项。这将删除错误并使M2E识别
maven dependency plugin
的目标
copy dependencies
,并使POM按预期工作,每次Eclipse构建它时都将依赖项复制到文件夹中。如果您只是想忽略错误,那么可以将
更改为
。不需要像前面建议的那样将
maven依赖插件
封装到
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>

org.eclipse.m2e
生命周期映射
1.0.0
org.apache.maven.plugins
maven依赖插件
[2.0,)
复制依赖项

我知道这是一篇老文章,但我今天也遇到了这个问题,我使用了这个页面上的模板:


我也得到了m2e的错误。

尽管上面有Caioton的回答,我还是在开始工作时遇到了问题

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

    <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>

org.apache.maven.plugins
maven依赖插件
2.8
复制
包裹
复制依赖项
${project.build.directory}/libMD
org.eclipse.m2e
生命周期映射
1.0.0
org.apache.maven.plugins
maven依赖插件
[2.0,)
复制依赖项

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

考虑到我遇到的所有问题,我决定继续使用EclipseLuna,而上面的解决方案对我来说并不适用

还有一篇帖子建议将…标记改为package。我开始这样做,它会“清除”错误…然而,我开始认为这些更改稍后会对我产生影响-我不是Maven方面的专家


幸运的是,我发现了如何删除所有错误。转到窗口->首选项->Maven->错误/警告,并将“插件执行未被生命周期覆盖…”选项更改为“忽略”。希望有帮助。

另一个选项是导航到“问题”选项卡,右键单击“错误”,然后单击“应用快速修复”。应该为您生成忽略xml代码并应用它的.pom文件。

要使其正常工作,而不是忽略它,您可以为maven依赖插件安装m2e连接器:

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

  • 转到窗口/首选项/Maven/Discovery/
  • 输入目录URL:
  • 单击“打开目录”
  • 选择m2e maven依赖插件
  • 享受

  • 谢谢,它在Eclipse Indigo SR2I中也有帮助。我有点迷路了……这是否意味着要使用代码
    <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>
    
        <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>