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:
这是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中做到这一点:
- 去窗口/首选项/ Maven / Discovery /
- input目录URL: http : //download.eclipse.org/technology/m2e/discovery/directory-1.4.xml
- 单击打开目录
- selectm2e-maven-dependency-plugin
- 请享用
尽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文件。