[eclipse] 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가이 작업을 “지원”하지 않는 이유는 무엇입니까? 메이븐은 그렇게하고, 그것이 제가 정말로 염려하는 전부입니다. 프로젝트에서이 오류를 어떻게 해결할 수 있습니까?



답변

알려진 문제인 것 같습니다. 이를 무시하도록 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 …-> 프로젝트 구성 업데이트를 수행해야합니다.

더 읽기 : http://wiki.eclipse.org/M2E_plugin_execution_not_covered#m2e_maven_plugin_coverage_status

옵션 2 : 글로벌 이클립스 재정의

POM 파일 변경을 피하기 위해 Eclipse 설정을 통해 무시 무시를 전체 작업 공간에 적용 할 수 있습니다.

이 파일을 디스크 어딘가에 저장하십시오 : https://gist.github.com/maksimov/8906462

에서 Eclipse/Preferences/Maven/Lifecycle Mappings확인을 클릭하고이 파일을 찾아보기 :

이클립스 설정


답변

이것은 Eclipse M2E 플러그인 실행에 대한 M2E의 문제가 다루지 않습니다 .

이 문제를 해결하려면 인식하지 못하는 수명주기를 매핑하고 M2E가이를 실행하도록 지시하면됩니다.

이 안에을 추가해야 plugins합니다 build. 이것은 오류를 제거하고 M2E 가 POM 의 목표 copy-depencies를 인식 maven-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>


답변

복사 종속성, 포장 풀기, 포장 등이 프로젝트에 중요한 경우 무시해서는 안됩니다. Eclipse Indigo SR1, maven 2.2.1 <plugins><pluginManagement>테스트를 완료 해야합니다 .


답변

그것을 무시하지 않고 작동시키기 위해 maven-dependency-plugin 용 m2e 커넥터를 설치할 수 있습니다.
https://github.com/ianbrandt/m2e-maven-dependency-plugin

Eclipse에서 수행하는 방법은 다음과 같습니다.

  1. 창 / 환경 설정 / Maven / Discovery /로 이동
  2. 카탈로그 URL을 입력하십시오. http://download.eclipse.org/technology/m2e/discovery/directory-1.4.xml
  3. 카탈로그 열기를 클릭하십시오
  4. m2e-maven-dependency-plugin을 선택하십시오
  5. 즐겨

답변

위의 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 Kepler에서 작동했을 수도 있습니다 … 더 이상 확실하지 않습니다 (너무 많은 것을 시도했습니다).

내가 가진 모든 문제로 인해 Eclipse Luna로 이동하기로 결정했으며 위의 해결책이 효과가 없었습니다.

… 태그를 패키지로 변경하도록 권장하는 다른 게시물이있었습니다. 나는 그 일을 시작했고 오류를 “명확하게”할 것입니다. 그러나 변경 사항이 나중에 물릴 것이라고 생각하기 시작합니다. 저는 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>

m2e1.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오류 가 발생했습니다.