我有一个相当简单的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确实如此,这就是我真正关心的。如何才能在我的项目中出现此错误消失?
答案 0 :(得分:165)
这似乎是一个已知问题。你可以指示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 ...... - &gt;在此之后更新项目的项目配置。
了解详情: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
中浏览到此文件,然后单击“确定”:
答案 1 :(得分:57)
这是Eclipse M2E plugin execution not covered的M2E问题。
要解决这个问题,您所要做的就是映射它无法识别的生命周期,并指示M2E执行它。
您应该在plugins
内build
之后添加此内容。这将删除错误并使M2E识别copy-depencies
的目标maven-dependency-plugin
并使POM按预期工作,每次Eclipse构建时都将依赖项复制到文件夹。如果您只是想忽略该错误,则可以更改<execute />
的{{1}}。无需按照之前的建议将<ignore />
封入maven-dependency-plugin
。
pluginManagement
答案 2 :(得分:38)
如果复制依赖项,解包,打包等对您的项目很重要,则不应忽略它。您必须将<plugins>
封装在使用Eclipse Indigo SR1测试的<pluginManagement>
中,maven 2.2.1
答案 3 :(得分:16)
要使其工作,而不是忽略它,您可以为maven-dependency-plugin安装m2e连接器:
https://github.com/ianbrandt/m2e-maven-dependency-plugin
以下是在Eclipse中如何做到这一点:
答案 4 :(得分:8)
尽管上面的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>
答案 5 :(得分:1)
尝试在eclipse中加载Hadoop项目时遇到了同样的问题。我尝试了上面的解决方案,我相信它可能在Eclipse Kepler中工作......甚至不再确定(尝试了太多的东西)。
由于我遇到的所有问题,我决定继续使用Eclipse Luna,上面的解决方案对我不起作用。
还有一篇帖子建议将...标签更改为包。我开始这样做了,它会“清除”错误......然而,我开始认为这些改变会让我后来咬我 - 我不是Maven的专家。
幸运的是,我发现了如何删除所有错误。转到Window-&gt; Preferences-&gt; Maven-&gt;错误/警告并将“生命周期未涵盖的插件执行...”选项更改为“忽略”。希望它有所帮助。
答案 6 :(得分:0)
我知道这是旧帖子,但我今天也遇到了这个问题,并且我使用了此页面中的模板: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
错误。
答案 7 :(得分:0)
另一个选项是导航到问题选项卡,右键单击错误,单击应用快速修复。应该生成ignore xml代码并为你应用.pom文件。