m2e는 maven-dependency-plugin ( "copy-dependencies", "unpack"목표)을 지원하지 않습니다


155

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


4
요즘 m2e는 m2e가 지원되지 않는 목표를 무시하도록 pom.xml에 적절한 구성을 추가하는 빠른 수정 사항을 제공합니다.
Thorbjørn Ravn Andersen

@ ThorbjørnRavnAndersen, 빠른 수정은 무엇입니까?
무하마드 Gelbana

1
@MuhammadGelbana Eclipse에서 "빠른 수정"은 다음을 의미합니다. Ctrl-1을 누르십시오. 빠른 수정을 선택하십시오.
Thorbjørn Ravn Andersen

답변:


164

알려진 문제인 것 같습니다. 이를 무시하도록 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확인을 클릭하고이 파일을 찾아보기 :

이클립스 설정


10
WAR 파일을 빌드 할 때 복사 종속성이 중요한 단계라면? 나는 괴물 m2Eclipse와 함께 일하고 있으며 액션을 실행하도록 변경하더라도 중요한 파일은 대상 폴더에 복사되지 않습니다 ...
bartv

1
@PhoneTech, m2e는 자동 생성 무시 설정의 경우 "이 플러그인 구성은 Eclipse m2e 설정 만 저장하는 데 사용됩니다. Maven 빌드 자체에는 영향을 미치지 않습니다." 라는 주석을 추가합니다 . 당신이 말하는 것은 당신을 위해 복사되지 않기 때문에 그것이 의미하는 바가 확실하지 않습니다.
Arjan

6
예, 도움이되었지만 ... 경고를 없애기위한 엄청나게 많은 코드입니다. : P
dokaspar

여전히 경고 메시지가 표시되지만 오류는 사라졌습니다.
stevecross 2016 년

57

이것은 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>

4
이것은 실제로 그것을 해결합니다. 그리고 나는 사람들이 하나로 이동하는 것에 대해 이야기 할 때 실제로 <plugins>안으로 <pluginManagement>들어가야한다고 생각하면서 바보 <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId>가되었습니다. 그러나에 포함되어야하는 것에 관한 것 <groupId>org.eclipse.m2e</groupId> <artifactId>lifecycle-mapping</artifactId>입니다 <pluginManagement>. 이클립스에서 빠른 수정을 사용하는 경우, 같은 추가 이상 일반 <plugins>, 그 위치가 너무 잘 작동 보인다. 키는로 변경 <ignore>됩니다 <execute>. 좋은.
Arjan

1
제공 한 링크에서 권장하는대로 실행 내에 <runOnIncremental> false </ runOnIncremental>이 필요하다는 것을 알았습니다. 답을 주셔서 감사합니다.
사이버 스님

plugins내부 에이 항목을 추가 할 필요가 없습니다 build. 전에 추가 할 수 있습니다.
Fagner Brack

38

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


4
덕분에, 그것은 또한 이클립스 인디고 SR2하는 데 도움이
stemm

1
조금 잃어 버렸습니다 ... 위의 코드를 사용하지만 <execute />대신에 코드를 사용한다는 의미 <ignore />입니까? 감사!
xverges

1
좀 더 설명해 주시겠습니까? 그냥 퍼팅 <plugin>으로 <pluginManagement>여전히 여전히 나에게 같은 경고를 제공, 그것의 일을 참조.
Arjan

@CaioToOn, 좀 더 알고 ...? 에 추가 한 후 <pluginManagement>난 여전히 "일반"2 줄을 추가해야하는 <build><plugins><plugin>...구성으로 하나를 참조뿐만 아니라, <pluginManagement>오른쪽? (여기에 Juno가 똑같은 것에 대해 불평하는 것을 보았습니다 <pluginManagement>.)
Arjan

@Arjan으로 plugins태그를 묶어야합니다 pluginManagement. 그러나 아래에 제시 한 답변을 살펴보십시오 . stackoverflow.com/a/12109018/179138 . 제안 된 것은 실행을 무시하지만 Eclipse에서 플러그인을 실행하지 마십시오.
Caio Cunha

16

그것을 무시하지 않고 작동시키기 위해 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. 즐겨

1
정답에 +1. pom.xml플러그인을 설치 한 후 파일을 약간만 편집 하면 오류가 사라지지 않을 수 있습니다.
Fagner Brack이


시도했지만 카탈로그 URL 필드는 편집 할 수 없습니다! 마지막에는 download.eclipse.org/technology/m2e/discovery/directory.xml(-1.4 제외 )로 설정되어 있습니다. 어떤 아이디어, 어떻게 / 어디서 조정할 수 있습니까?
mmo

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>

당신은 일식에서 실행할 목표를 제공 할 수 있습니까?
Jess

1

일식으로 하둡 프로젝트를로드하려고 할 때도 같은 문제가있었습니다. 위의 솔루션을 시도했지만 Eclipse Kepler에서 작동했을 수도 있습니다 ... 더 이상 확실하지 않습니다 (너무 많은 것을 시도했습니다).

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

... 태그를 패키지로 변경하도록 권장하는 다른 게시물이있었습니다. 나는 그 일을 시작했고 오류를 "명확하게"할 것입니다. 그러나 변경 사항이 나중에 물릴 것이라고 생각하기 시작합니다. 저는 Maven의 전문가가 아닙니다.

다행히도 모든 오류를 제거하는 방법을 찾았습니다. 창-> 환경 설정-> Maven-> 오류 / 경고로 이동하여 "라이프 사이클이 적용되지 않는 플러그인 실행 ..."옵션을 "무시"로 변경하십시오. 도움이 되길 바랍니다.


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>

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


예, 이것이 바로이 항목의 목적입니다. m2e는 이제 Eclipse 빌드 라이프 사이클에서 플러그인 실행을 맵핑 하기 위해 커넥터 가 필요합니다 . <br/> 내 의견 작성 당시에도 m2e는 몇 가지 커넥터 만 지원합니다. lifecycle-mappingMaven 플러그인을 사용하여 m2e에 지원되지 않는 플러그인 (여기서는 maven-dependency-plugin) 을 처리하는 방법을 지시해야합니다
Olivier B.

0

다른 옵션은 문제 탭으로 이동하여 오류를 마우스 오른쪽 버튼으로 클릭하고 빠른 수정 적용을 클릭하는 것입니다. 무시 xml 코드를 생성하고 .pom 파일을 적용해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.