Eclipse에서 갑자기 “[m2e] Lifecycle Mapping” 오류? Maven 프로젝트가 빨간 줄 뜨는 이유
들어가며
Eclipse에서 Maven 프로젝트를 Import하거나 pom.xml을 수정하다 보면 갑자기 프로젝트에 빨간색 X 표시가 생기면서 [m2e] 또는 Lifecycle Mapping과 관련된 오류가 나타나는 경우가 있습니다.
처음 보면 Maven 설정 자체가 잘못된 것처럼 보이고, pom.xml을 이것저것 수정하게 되는데 의외로 실제 원인은 조금 다릅니다.
저도 이런 오류를 처음 봤을 때는 dependency가 잘못됐거나 Maven 버전이 맞지 않는 문제라고 생각하기 쉬웠습니다. 그런데 내용을 자세히 보면 Eclipse의 m2e(Maven Integration for Eclipse)가 특정 Maven 플러그인의 실행 방법을 제대로 매핑하지 못해서 발생하는 경우가 많습니다.
m2e Lifecycle Mapping 오류란?
먼저 m2e가 무엇인지 간단하게 알아보겠습니다.
m2e는 Eclipse에서 Maven 프로젝트를 사용할 수 있도록 연결해주는 기능입니다. 일반적인 Maven 명령어는 터미널에서 mvn 명령을 실행하면 되지만, Eclipse에서는 Maven의 빌드 과정과 Eclipse의 프로젝트 관리 기능을 연결해야 합니다.
이 과정에서 등장하는 것이 바로 Lifecycle Mapping입니다.
Maven은 여러 가지 플러그인을 사용해서 컴파일, 테스트, 리소스 처리, 코드 생성 등의 작업을 수행합니다.
그런데 특정 Maven 플러그인이 Eclipse의 m2e가 이해할 수 있는 방식으로 연결되어 있지 않으면 다음과 비슷한 메시지가 나타날 수 있습니다.
Plugin execution not covered by lifecycle configuration
또는 프로젝트 오류에 [m2e]와 Lifecycle Mapping이라는 표현이 표시되기도 합니다.
여기서 중요한 점은 Maven 자체가 무조건 실행되지 않는다는 의미는 아니라는 것입니다.
터미널에서 Maven 명령을 실행하면 정상적으로 동작하는데 Eclipse에서만 빨간색 오류가 나타나는 경우도 있습니다.
왜 이런 오류가 발생할까?
가장 흔한 원인은 pom.xml에 등록된 Maven plugin과 Eclipse m2e 사이의 처리 방식이 맞지 않는 경우입니다.
예를 들어 프로젝트에서 특정 plugin을 사용하고 있다고 가정해보겠습니다.
Maven에서는 해당 plugin을 실행하는 것이 정상인데, Eclipse의 m2e 입장에서는 “이 plugin을 Eclipse 프로젝트의 빌드 과정에서 어떻게 처리해야 하지?”라는 문제가 생길 수 있습니다.
특히 오래된 프로젝트를 최신 버전의 Eclipse로 가져오거나, 기존 개발 환경과 다른 환경에서 프로젝트를 Import했을 때 이런 문제가 눈에 띄는 경우가 있습니다.
또한 annotation processor, 코드 생성 plugin, resource 처리 plugin 등 특정 작업을 수행하는 Maven plugin에서도 비슷한 문제가 발생할 수 있습니다.
가장 먼저 확인할 것은 pom.xml
이런 오류가 발생하면 무작정 Eclipse 설정부터 변경하기보다는 pom.xml을 먼저 확인하는 것이 좋습니다.
특히 다음과 같은 부분을 찾아보면 됩니다.
<build>
<plugins>
...
</plugins>
</build>
여기에 등록되어 있는 Maven plugin 중 Eclipse에서 오류로 표시되는 항목이 있는지 확인합니다.
오류 메시지를 클릭하면 어떤 plugin의 어떤 execution이 문제인지 표시되는 경우가 많습니다.
예를 들어 특정 plugin의 execution이 lifecycle configuration에 포함되지 않았다는 식으로 나온다면, 바로 그 plugin을 먼저 확인하면 됩니다.
Maven 명령은 정상인데 Eclipse에서만 오류가 난다면?
이 부분이 꽤 중요합니다.
터미널이나 명령 프롬프트에서 프로젝트 폴더로 이동한 다음 Maven을 실행해보는 방법이 있습니다.
mvn clean package
또는 프로젝트 상황에 따라:
mvn clean install
을 실행합니다.
여기서 Maven 빌드가 정상적으로 완료된다면 pom.xml 자체가 완전히 망가진 상황은 아닐 가능성이 있습니다.
반대로 터미널에서도 동일한 plugin 오류가 발생한다면 Eclipse의 문제가 아니라 실제 Maven 프로젝트 설정을 먼저 확인해야 합니다.
즉, Eclipse에서만 빨간 줄이 발생하는지, Maven 자체에서도 오류가 발생하는지 구분하는 것이 첫 번째 단계입니다.
Eclipse에서 Maven 프로젝트 업데이트하기
설정을 수정하지 않았는데도 Eclipse에서 오류가 계속 표시된다면 Maven 프로젝트를 다시 업데이트해볼 수 있습니다.
Project Explorer에서 해당 프로젝트를 선택하고 마우스 오른쪽 버튼을 클릭합니다.
일반적으로 다음과 같은 메뉴를 찾을 수 있습니다.
Maven → Update Project
단축키가 설정되어 있다면 Alt + F5를 사용할 수도 있습니다.
Update Project 창에서 프로젝트를 선택하고 업데이트를 진행합니다.
이 과정에서 Eclipse가 pom.xml을 다시 읽고 Maven 프로젝트의 설정과 dependency 정보를 갱신합니다.
간단한 metadata 문제였다면 이것만으로 빨간색 오류 표시가 사라지는 경우도 있습니다.
그래도 해결되지 않는다면?
Maven 프로젝트를 업데이트했는데도 [m2e] Lifecycle Mapping 오류가 계속 남아 있다면 오류 메시지에 표시된 plugin을 정확히 확인해야 합니다.
예를 들어 다음과 같은 형태의 오류가 있다면:
Plugin execution not covered by lifecycle configuration
무조건 Maven dependency를 삭제하거나 Eclipse를 재설치할 필요는 없습니다.
어떤 plugin의 어떤 execution이 문제인지 확인한 다음 해당 plugin이 Eclipse m2e에서 어떤 방식으로 처리되어야 하는지를 찾아보는 것이 순서입니다.
프로젝트에 따라서는 lifecycle-mapping 설정을 추가해서 Eclipse m2e에게 해당 plugin execution을 어떻게 처리할지 알려주는 방법도 있습니다.
다만 이 방법은 프로젝트의 Maven 설정에 직접 영향을 주기 때문에 오류 메시지를 확인하지 않은 상태에서 무작정 복사해서 넣는 것은 추천하지 않습니다.
Eclipse 버전과 프로젝트의 차이도 확인
회사나 오래된 개인 프로젝트를 새 PC로 가져왔을 때 이런 문제가 발생한다면 개발환경 차이도 살펴볼 필요가 있습니다.
예를 들어 기존 환경에서는 정상적으로 사용하던 Eclipse plugin이나 Maven plugin이 현재 설치된 Eclipse 버전에서는 다르게 처리될 수 있습니다.
JDK 버전 역시 확인해야 합니다.
특히 최근 Java 버전을 사용하는 환경으로 기존 프로젝트를 옮긴 경우에는 Maven compiler plugin이나 기타 build plugin과 관련된 문제가 함께 나타날 수 있습니다.
따라서 다음 항목을 하나씩 확인하는 것이 좋습니다.
- Eclipse 버전
- JDK 버전
- Maven 버전
pom.xml의 Maven plugin 버전- 프로젝트의 Maven 실행 결과
- Eclipse m2e 오류 메시지
- 오류가 발생한 plugin execution
가장 중요한 것은 오류 메시지를 그대로 보는 것
m2e Lifecycle Mapping이라는 단어만 보고 검색하면 비슷한 해결 방법이 너무 많이 나옵니다.
하지만 실제로는 프로젝트마다 원인이 다를 수 있습니다.
어떤 프로젝트는 특정 plugin 때문에 발생하고, 어떤 프로젝트는 Eclipse의 Maven metadata 문제일 수 있습니다. 또 어떤 경우에는 Maven에서는 정상적으로 실행되지만 Eclipse의 incremental build 과정에서만 문제가 발생할 수도 있습니다.
그래서 가장 좋은 방법은 빨간 X 표시를 클릭하고 Problems 창에 표시되는 정확한 오류 메시지와 plugin 이름을 확인하는 것입니다.
개인적으로 이런 종류의 Eclipse 오류는 무작정 설정을 바꾸기보다 pom.xml → 오류 plugin 확인 → Maven 명령어 실행 → Maven Update Project 순서로 확인하는 것이 훨씬 편했습니다.
결국 [m2e] Lifecycle Mapping 오류는 “Maven 프로젝트가 완전히 잘못됐다”는 의미로 받아들이기보다는 Eclipse의 m2e와 Maven plugin 사이에서 해당 실행 과정을 어떻게 연결할지 문제가 생겼다는 신호로 이해하면 됩니다.
따라서 먼저 실제 Maven 빌드가 실패하는지 확인하고, Maven 자체는 정상이라면 Eclipse m2e의 lifecycle mapping과 프로젝트 metadata 쪽을 확인하는 것이 좋습니다.
홍TV




댓글 0
첫 댓글을 남겨보세요.