라이프 사이클 구성에 포함되지 않는 플러그인 실행 (JBossas 7 EAR 아키 타입)


123

Maven M2E Plugin 1.0.100과 함께 Eclipse 3.7 Indigo를 사용하고 있습니다.

JBoss 7.x JavaEE 6 EAR archetype을 사용하면 EAR에 대한 pom이 다음 오류를 제공합니다.

수명주기 구성에 포함되지 않는 플러그인 실행 : org.apache.maven.plugins : maven-ear-plugin : 2.6 : generate-application-xml (실행 : default-generate-application-xml, 단계 : generate-resources)

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-ear-plugin</artifactId>
   <version>2.6</version>
   <configuration>
      <!-- Tell Maven we are using Java EE 6 -->
      <version>6</version>
      <!-- Use Java EE ear libraries as needed. Java EE ear libraries 
                  are in easy way to package any libraries needed in the ear, and automatically 
                  have any modules (EJB-JARs and WARs) use them -->
      <defaultLibBundleDir>lib</defaultLibBundleDir>
      <modules></modules>
   </configuration>
<plugin>

답변:


138

이것은 얼마 전에 소개 된 M2E 플러그인의 "기능"입니다. JBoss EAR 플러그인과 직접 관련이 없지만 대부분의 다른 Maven 플러그인에서도 발생합니다.

에 정의 된 플러그인 실행이있는 경우 pom(예 maven-ear-plugin:generate-application-xml:), 빌드가 Eclipse에서 실행될 때 수행 할 작업을 M2E에 알려주는 M2E에 대한 추가 구성 정보를 추가해야합니다 (예 : 플러그인 실행이 무시되거나 실행되는 경우). M2E, 증분 빌드에 대해서도 수행해야하는 경우 ... 해당 정보가 누락 된 경우 M2E는 다음 오류 메시지를 표시하여 이에 대해 불평합니다.

"라이프 사이클 구성에 포함되지 않는 플러그인 실행"

자세한 설명과 해당 오류를 없애기 위해 pom에 추가해야하는 몇 가지 샘플 구성은 여기를 참조하세요.

https://www.eclipse.org/m2e/documentation/m2e-execution-not-covered.html


70
@Jan 개념을 이해하지 못합니다. M2E는 사용자에게 투명해야합니다. 명령 줄 Maven이하는 일을 수행하지만 Eclipse 내에서 수행합니다. M2E에게 무엇을해야할지 알려주는 pom config 데이터가 없어야합니다. 그렇다면 그것은 나쁜 디자인입니다. BTW, 이러한 오류는 때때로 최신 버전의 Eclipse 및 M2E에서 사라집니다.
랩트

8
나는 랩에 동의합니다. 내 POM은 m2e에 의존하지 않으며 Eclipse를 IDE로 사용하기 때문에 지금 추가하고 싶습니다. 이는 IntelliJ와 같은 다른 IDE를 사용하고있을 수있는 동일한 프로젝트에서 작업하는 다른 사람들에게 임 포스트입니다. m2e에 이러한 힌트가 필요한 경우 Eclipse 내에서 m2e 구성의 일부 여야합니다.
William

12
Eclipse에서 일부 목표는 의미가 없습니다. 예를 들어 ZIP 파일이 target폴더에 압축 해제 된 프로젝트가 있습니다 . 각 소스 파일을 저장할 때 "점진적으로"다시 수행되는 것을 원하지 않습니다. 아니면 당신 원할 수도 있습니다 . 실제로 m2e는 특정 빌드에 대해 전혀 모릅니다. Eclipse, POM에서 m2e가 수행해야하는 작업을 저장하거나 빌드 단계를 처리하기 위해 m2e에 더 많은 지식을 추가하는 m2e 커넥터를 설치할 수 있습니다. 이것은 당신이보아야 할 옵션입니다. 나는 당신이 당신의 POM m2e를 인식하도록 만들고 싶지 않다는 것을 이해하지만, 모든 개발자를 위해 이것을 중앙에서 구성하기에 좋은 곳입니다.
Sander Verhagen 2013 년

3
문제는 Maven 또는 Eclipse에 대한 대부분의 문서와 마찬가지로 이에 대한 링크 된 문서입니다. abcacadabra입니다. 그들이 그것을 명확하게 설명하려고 아무리 노력하더라도, 상대적으로 새로운 Maven 사용자로서 이해하지 못하고 찾는 방법을 모르는 너무 많은 개념에 대한 설명이 있습니다. 내가 찾은 모든 것은 동일한 문제를 가지고 있습니다 : 설명 할 수없는 너무 많은 것 개념. 기술이 너무 복잡하거나 문서가 너무 잘못 구성되어 있습니다. 어쨌든 학습 곡선이 높습니다. 여기에 대한 답변은 상당한 명확성을 추가합니다.
reinierpost

10
@RicardoGladwell 당신은 반대표의 목적을 오해했습니다. 화살표는 "이 답변은 유용하지 않습니다."라고 표시되어 있으며이 답변은 사실이 아닙니다. 따라서이 답변이 작성된 어조가 마음에 들지 않더라도 반대표는 요청되지 않았습니다.
Dawood ibn Kareem

43

어쨌든 너무 늦었지만 내 솔루션은 Eclipse에서 오류 메시지를 마우스 오른쪽 버튼으로 클릭하고 Quick Fix >> Ignore for every pom with such errors를 선택하는 것이 었습니다.


3
너무 늦진 않았어. 이 방법으로 문제를 해결했습니다!
reinierpost

2
나도. 이 모든 연구와 문제가 무엇인지 이해하려고 노력하면 두통이 생겼으므로 무시했습니다. :) 감사합니다.
dleerob

1
이것은 나를 위해 일했습니다. 빠른 수정을 수락 한 후 내가 본 유일한 변경 사항은 내 pom에 대한 변경이기 때문에 eclipse.org/m2e/documentation/m2e-execution-not-covered.html 을 가리키는 @Jan 의 답변에 설명 된 내용을 자동으로 생성한다고 생각합니다 . xml.
Michael Osofsky

다른 컴퓨터에서 다시 시도했는데 JBehave 3.9.4에서 3.9.5로 업그레이드했을 때 문제가 사라졌습니다. 제 경우에는 JBehave 플러그인이 오류를 생성했기 때문입니다 (JBehave Maven archetype에서 플러그인 구성을 생성했습니다 ( jbehave.org/reference/stable/archetypes.html ))
Michael Osofsky

30

Eclipse에는 증분 빌드라는 개념이 있으며 이는 많은 시간을 절약 할 수 있기 때문에 매우 유용합니다.

이것이 어떻게 유용합니까?

단일 .java 파일을 변경했다고 가정합니다. 증분 빌더는 모든 것을 다시 컴파일하지 않고도 코드를 컴파일 할 수 있습니다 (더 많은 시간이 소요됨).

이제 Maven 플러그인의 문제점은 무엇입니까?

대부분의 maven 플러그인은 증분 빌드 용으로 설계되지 않았으므로 m2e에 문제가 발생합니다. m2e는 플러그인 목표가 중요한 것인지 또는 관련이없는 것인지 알지 못합니다. 단일 파일이 변경 될 때 모든 플러그인을 실행하면 많은 시간이 걸립니다.

이것이 m2e가 메타 데이터 정보에 의존하여 실행이 어떻게 처리되어야하는지 파악하는 이유입니다. m2e는이 메타 데이터 정보를 제공하기 위해 다양한 옵션을 제시했으며 선호하는 순서는 다음과 같습니다.

  1. 프로젝트의 pom.xml 파일
  2. 부모, 조부모 등 pom.xml 파일
  3. [m2e 1.2+] 작업 공간 환경 설정
  4. 설치된 m2e 확장
  5. [m2e 1.1+] maven 플러그인에서 제공하는 라이프 사이클 매핑 메타 데이터
  6. m2e와 함께 제공되는 기본 수명주기 매핑 메타 데이터

1,2는 pom 파일 또는 그 부모의 태그에 pluginManagement 섹션을 지정하는 것을 나타냅니다. M2E는이 구성을 읽고 프로젝트를 구성합니다. 아래 스 니펫은 m2e가 yuicompressor-maven-plugin 의 jslintcompress목표 를 무시하도록 지시합니다.

<pluginManagement>
        <plugins>
            <!--This plugin's configuration is used to store Eclipse m2e settings 
                only. It has no influence on the Maven build itself. -->
            <plugin>
                <groupId>org.eclipse.m2e</groupId>
                <artifactId>lifecycle-mapping</artifactId>
                <version>1.0.0</version>
                <configuration>
                    <lifecycleMappingMetadata>
                        <pluginExecutions>
                            <pluginExecution>
                                <pluginExecutionFilter>
                                    <groupId>net.alchim31.maven</groupId>
                                    <artifactId>yuicompressor-maven-plugin</artifactId>
                                    <versionRange>[1.0,)</versionRange>
                                    <goals>
                                        <goal>compress</goal>
                                        <goal>jslint</goal>
                                    </goals>
                                </pluginExecutionFilter>
                                <action>
                                    <ignore />
                                </action>
                            </pluginExecution>
                        </pluginExecutions>
                    </lifecycleMappingMetadata>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>

3)이 메타 데이터로 pom 파일을 오염시키는 것을 선호하지 않는 경우이를 외부 XML 파일 (옵션 3)에 저장할 수 있습니다. 다음은 m2e가 yuicompressor-maven-plugin 의 jslintcompress목표 를 무시하도록 지시하는 샘플 매핑 파일입니다.

<?xml version="1.0" encoding="UTF-8"?>
<lifecycleMappingMetadata>
    <pluginExecutions>
        <pluginExecution>
            <pluginExecutionFilter>
                <groupId>net.alchim31.maven</groupId>
                <artifactId>yuicompressor-maven-plugin</artifactId>
                <versionRange>[1.0,)</versionRange>
                <goals>
                    <goal>compress</goal>
                    <goal>jslint</goal>
                </goals>
            </pluginExecutionFilter>
            <action>
                <ignore/>
            </action>
        </pluginExecution>
    </pluginExecutions>
</lifecycleMappingMetadata>

4) 위 3 가지 옵션 중 마음에 들지 않는 경우 maven 플러그인에 m2e 커넥터 (확장자)를 사용할 수 있으며 커넥터는 m2e에 메타 데이터를 제공합니다. 이 링크 에서 커넥터 내 메타 데이터 정보의 예를 볼 수 있습니다 . 메타 데이터가 구성자를 참조한다는 것을 눈치 채 셨을 것입니다. 이것은 단순히 m2e가 확장 작성자가 제공하는 특정 Java 클래스에 책임을 위임한다는 것을 의미합니다. 구성자는 프로젝트를 구성 (예 : 추가 소스 폴더 추가 등)하고 증분 빌드 중에 실제 maven 플러그인을 실행할지 여부를 결정할 수 있습니다 ( 구성자 내에서 제대로 관리되지 않으면 끝없는 프로젝트 빌드로 이어질 수 있습니다.)

구성 기 ( link1 , link2 ) 의 예는이 링크를 참조하십시오 . 따라서 플러그인이 외부 커넥터를 통해 관리 할 수있는 것이라면 설치할 수 있습니다. m2e는 다른 개발자가 제공 한 이러한 커넥터 목록을 유지 관리하며이를 검색 카탈로그라고합니다. 옵션 (1-6)을 통해 실행을위한 라이프 사이클 매핑 메타 데이터가 아직없고 검색 카탈로그에 실행을 관리 할 수있는 일부 확장이있는 경우 m2e는 커넥터를 설치하라는 메시지를 표시합니다.

아래 이미지는 m2e가 build-helper-maven-plugin 용 커넥터를 설치하라는 메시지를 표시하는 방법을 보여줍니다. 검색 카탈로그에서 제안 된 커넥터 설치.

5) m2e는 플러그인 작성자가 증분 빌드를 지원하고 maven-plugin 자체 내에서 수명주기 매핑을 제공하도록 장려합니다. 이는 사용자가 추가 수명주기 매핑 또는 커넥터를 사용할 필요가 없음을 의미합니다. 일부 플러그인 작성자는 이미이를 구현했습니다.

6) 기본적으로 m2e는 maven-compiler-plugin 및 기타 여러 플러그인과 같이 일반적으로 사용되는 대부분의 플러그인에 대한 수명주기 매핑 메타 데이터를 보유합니다.

이제 질문으로 돌아갑니다. 문제를 일으키는 특정 목표에 대해 1, 2 또는 3에서 수명주기 매핑 무시를 제공 할 수 있습니다.


14

프로젝트가 오 탐지 오류 마커를 상속하지 않고도 m2e를 더 잘 구성 할 수 있음을 상기시키는 좋은 해결 방법은 해당 오류를 경고로 다운 그레이드하는 것입니다.

창-> 환경 설정-> Maven-> 오류 / 경고-> 라이프 사이클 구성에 포함되지 않는 플러그인 실행 = 경고


12

정리 후 바로 특정 플러깅을 실행하려고했습니다. 즉, 사후 정리 (기본값은 정리 단계)입니다. 이것은 일식 인디고로 나를 위해 일했습니다. 방금 추가 된 청소 후 문제가 해결되었습니다.

<executions>
  <execution>
    <configuration>
    </configuration>
   <phase>post-clean</phase>
    <goals>
      <goal>update-widgetset</goal>
    </goals>
  </execution>
</executions> 

11
작동 하는지 설명해 주 시겠습니까? "방금 추가됨"및 "해결됨"은 원치 않는 숨겨진 동작이 없다는 것에 대한 신뢰를 실제로 높이 지 않습니다.
Kissaki

물론, 나 에게 주어진 pom.xml에 a phase와 a goalexecution있지만 여전히 오류가 발생합니다.
reinierpost

신사-내 사과. 나는 전문가가 아니며 빠른 해결책을 찾는 누군가를 돕고 싶었습니다. 그래도 더 많은 통찰력을 주어야합니다. 여기서 트릭은 실행 단계를 포함하는 것이라고 생각합니다. mojo는 실행 단계로 정의 할 수 있기 때문에 정리 직후에 특정 플러깅을 실행하려고했습니다. 즉, 사후 정리 (기본값은 정리 단계)입니다. 이것은 일식 인디고로 나를 위해 일했습니다. 아마도 특정 플러그인이 주 pom의 일부 종속성을 사용했을 수 있습니까? IIRC 이것은 Vaadin 기반 플러그인이었습니다.
Charith De Silva 2014-06-25

2

이 솔루션을 적용하여 Eclipse Kepler 4.3에서 maven-antrun-plugin 및 jaxb2-maven-plugin으로 동일한 문제를 해결할 수있었습니다. http://wiki.eclipse.org/M2E_plugin_execution_not_covered#Eclipse_4.2_add_default_mapping
그래서 내 %의 내용 elipse_workspace_name % /. metadata / .plugins / org.eclipse.m2e.core / lifecycle-mapping-metadata.xml은 다음과 같습니다.

<?xml version="1.0" encoding="UTF-8"?>
<lifecycleMappingMetadata>
  <pluginExecutions>
    <pluginExecution>
      <pluginExecutionFilter>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>
        <versionRange>1.3</versionRange>
        <goals>
          <goal>run</goal>
        </goals>
      </pluginExecutionFilter>
      <action>
        <ignore />
      </action>
    </pluginExecution>
    <pluginExecution>
      <pluginExecutionFilter>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>jaxb2-maven-plugin</artifactId>
        <versionRange>1.2</versionRange>
        <goals>
          <goal>xjc</goal>
        </goals>
      </pluginExecutionFilter>
      <action>
        <ignore />
      </action>
    </pluginExecution>
  </pluginExecutions>
</lifecycleMappingMetadata>

* Eclipse를 다시 시작해야 오류가 사라졌습니다.


1

현재 메이븐 이클립스 (m2e) 버전 0.12 모든 메이븐 라이프 사이클 목표는 설치 m2e 확장에 매핑해야합니다. 이 경우에 maven-ear-plugin매핑되지 않은 목표가 default-generate-application-xml있습니다.

다음 지침에 따라 매핑되지 않은 수명주기 목표를 제외 할 수 있습니다.

https://wiki.eclipse.org/M2E_plugin_execution_not_covered

또는 Eclipse에서 오류 메시지를 마우스 오른쪽 버튼으로 클릭하고 Quick Fix->를 선택하십시오 Ignore for every pom with such errors.

수명주기 목표를 무시할 때주의해야합니다. 일반적으로 목표는 유용한 작업을 수행하며 Eclipse에서 무시하도록 구성하면 중요한 빌드 단계를 놓칠 수 있습니다. 매핑되지 않은 수명주기 목표를 위해 Maven Eclipse EAR 확장에 지원을 추가하는 것을 고려할 수도 있습니다.


0

Jan의 답변에 설명 된 메커니즘을 사용하여 m2e 플러그에 "generate-application-xml"목표를 무시하도록 지시했습니다. 이것은 오류를 제거하고 m2e가 application.xml을 생성하기 때문에 작동하는 것 같습니다.

따라서 기본적으로 오류로 인해 Maven 빌드가 m2e 플러그인의 제어하에 Eclipse 내에서 실행될 때 application.xml 생성을 담당하는 메커니즘을 결정해야했습니다. 그리고 우리는 m2e가 담당이라고 결정했습니다.

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-ear-plugin</artifactId>
            <version>2.6</version>
            <configuration>
                <version>6</version>
                <defaultLibBundleDir>lib</defaultLibBundleDir>
            </configuration>
        </plugin>
    </plugins>
    <pluginManagement>
        <plugins>
            **<!-- This plugin's configuration is used to store Eclipse m2e settings 
                only. It has no influence on the Maven build itself. -->
            <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-ear-plugin</artifactId>
                                    <versionRange>[2.1,)</versionRange>
                                    <goals>
                                        <goal>generate-application-xml</goal>
                                    </goals>
                                </pluginExecutionFilter>
                                <action>
                                    <ignore></ignore>
                                </action>
                            </pluginExecution>
                        </pluginExecutions>
                    </lifecycleMappingMetadata>
                </configuration>
            </plugin>**
        </plugins>
    </pluginManagement>
</build>

0

M2E_plugin_execution_not_covered 의 내용을 이해하고 아래에 언급 된 단계를 따라야합니다.

  • eclipse 플러그인 폴더에서 org.eclipse.m2e.lifecyclemapping.defaults jar를 선택하십시오.
  • 압축을 풀고 모든 pluginExecutions를 찾을 수있는 lifecycle-mapping-metadata.xml을여십시오.
  • <ignore/>아래 <action>태그 와 함께 오류로 표시되는 플러그인의 pluginExecutions를 추가하십시오 .

예 : write-project-properties 오류 <pluginExecutions>의 경우 lifecycle-mapping-metadata.xml 파일 의 섹션 아래에 다음 코드 조각을 추가 합니다.

 <pluginExecution>
    <pluginExecutionFilter>
       <groupId>org.codehaus.mojo</groupId>
       <artifactId>properties-maven-plugin</artifactId>
       <versionRange>1.0-alpha-2</versionRange>
       <goals>
         <goal>write-project-properties</goal>
       </goals>
    </pluginExecutionFilter>
     <action>
       <ignore />
     </action>
   </pluginExecution>
  • JAR에서 해당 XML 파일을 바꿉니다.
  • Eclipse의 플러그인 폴더에서 업데이트 된 JAR 교체
  • Eclipse 다시 시작

앞으로 모든 프로젝트에 오류가 표시되지 않아야합니다.


0

질문이 너무 오래되었지만이 오류에 관해서는 이미 모든 것을 확인했기 때문에 저에게 도움이 된 해결책을 공유하고 싶습니다. 고통 스러웠고 이틀 동안 노력했고 결국 해결책은 다음과 같았습니다.

Eclipse에서 M2e 플러그인 업데이트

청소하고 다시 짓다

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