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

Naf*_*Kay 155 eclipse m2eclipse 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>
Run Code Online (Sandbox Code Playgroud)

但是,我在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
Run Code Online (Sandbox Code Playgroud)

为什么我关心m2eclipse是否"支持"这项任务?Maven确实如此,这就是我真正关心的.如何才能在我的项目中出现此错误消失?

mak*_*mov 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>
Run Code Online (Sandbox Code Playgroud)

您将需要执行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浏览到此文件并单击"确定":

Eclipse设置

  • 如果复制依赖项是构建WAR文件的重要步骤,该怎么办?我正在使用monstrosity调用m2Eclipse,即使更改要执行的操作,重要文件也不会复制到目标文件夹... (9认同)
  • 是的,它有所帮助......但这是一个非常多的代码,只是摆脱警告:P (6认同)

Cai*_*nha 57

这是一个未涵盖 Eclipse M2E插件执行的M2E问题.

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

你应该在你的plugins内部添加它build.这将删除错误,使M2E识别目标copy-depenciesmaven-dependency-plugin,使POM工作不如预期,复制依赖每Eclipse构建它的时候到文件夹.如果你只是想忽略错误,那么你就改变<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>
Run Code Online (Sandbox Code Playgroud)

  • 这确实解决了它.当我们讨论将`<plugins>`移动到`<pluginManagement>时,我想是一个愚蠢的想法,实际上应该移动`<groupId> org.apache.maven.plugins </ groupId> <artifactId> maven-dependency -plugin </ artifactId>`在那里.但它是关于`<groupId> org.eclipse.m2e </ groupId> <artifactId> lifecycle-mapping </ artifactId>`需要包含在`<pluginManagement>`中.在Eclipse中使用Quick Fix时,在常规`<plugins>`上面添加了*,并且看起来位置也正常.然后键是将`<ignore>`改为`<execute>`.尼斯. (4认同)

use*_*174 38

如果copy-dependencies,unpack,pack等对您的项目很重要,那么您不应该忽略它.你必须附上您<plugins><pluginManagement>使用Eclipse靛蓝SR1,行家2.2.1测试

  • 谢谢,它也有助于Eclipse Indigo SR2 (4认同)

mar*_*rio 16

为了使它工作,而不是忽略它,你可以为maven-dependency-plugin安装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-dependency-plugin
  5. 请享用


SGB*_*SGB 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>
Run Code Online (Sandbox Code Playgroud)