m2e不支持maven-dependency-plugin(目标是“copy-dependencies”,“unpack”)

我有一个相当简单的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不“支持”这个任务? Maven的确如此,这就是我真正关心的。 我怎样才能在我的项目中得到这个错误消失?

这似乎是一个已知的问题。 你可以指示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 … – >在这之后更新项目的Project Configuration。

阅读更多: 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设置

这是M2E for M2E插件执行没有涉及的一个问题。

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

你应该在plugins ,在build添加这个。 这将消除错误,并使M2E识别maven-dependency-plugin的目标copy-depencies maven-dependency-plugin ,并使POM按预期工作,每次Eclipse构build时都将依赖关系复制到文件夹。 如果你只是想忽略错误,那么你改变<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> 

如果复制依赖关系,解包,打包等对您的项目很重要,那么您不应该忽略它。 你必须把你的<plugins>放在<pluginManagement>用Eclipse Indigo SR1 maven 2.2.1testing

为了使它工作,而不是忽略它,你可以安装maven-dependency-plugin的m2e连接器:
https://github.com/ianbrandt/m2e-maven-dependency-plugin

这里是你如何在Eclipse中做到这一点:

  1. 去窗口/首选项/ Maven / Discovery /
  2. input目录URL: http : //download.eclipse.org/technology/m2e/discovery/directory-1.4.xml
  3. 单击打开目录
  4. selectm2e-maven-dependency-plugin
  5. 请享用

尽pipe上面的答案来自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项目时遇到同样的问题。 我试过上面的解决scheme,我相信它可能在Eclipse开普勒工作…甚至不知道(尝试了太多东西)。

由于我遇到的所有问题,我决定转到Eclipse Luna,上面的解决scheme对我不起作用。

还有另一个postbuild议将…标签更改为包装。 我开始这样做,它会“清除”错误…但是,我开始认为这些改变会让我感到吃惊 – 我不是Maven的专家。

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

我知道这是旧的职位,但我今天也与这个问题挣扎,我用这个页面的模板: 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> 

m2e 1.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错误。

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