앞선 포스트까지 메이븐을 이용한 라이브러리 관리에 대해서 살펴봤는데 가끔 오동작 하는 경우가 있어서 그 문제에 대한 처리 방식을 고민해보자.
라이브러리 다운로드 오류 처리
maven은 네트워크를 통해서 원격지의 파일을 가져오는데 가끔 불안한 네트워크 환경에서는 라이브러리가 다운로드 되는 과정에서 깨지는 경우가 발생한다.
이런 경우는 정말 다양하게 에러가 표시되기 때문에 정형화 하기가 어려운데 대부분 처리 방식은 하나다.
1. pom.xml 파일의 오류로 컴파일이 되지 않는 경우
2. 컴파일은 되지만 실제 실행 시 아래와 같은 오류가 발생하는 경우
-Archive for required library: '사용자별_메이븐_경로/org/springframework/spring-context/5.1.7.RELEASE/spring-context-5.1.7.RELEASE.jar' in project 'temp' cannot be read or is not a valid ZIP file
이런 경우는 애초에 jar 파일이 다운로드 되지 않은 경우일 확률이 높다. maven에서 사용하는 라이브러리는 기본적으로 c:\Users\사용자\.m2 경로에 다운로드 된다.
그런데 실제로 저 위치에 jar가 다운로드 되지 않는 경우에 위와 같은 오류가 표시될 수 있다.
원인은 앞서 이야기 했듯이 원활하지 않은 네트워크 샹황에서 라이브러리가 다운로드 과정에서 깨지는 경우가 대부분이다. 특히 무선 랜 환경에서 그렇다.
이 경우 이미 잘못 다운로드된 파일을 삭제하고 다시 받는 수밖에 없다.
사용자별 메이븐 경로(기본은 c:\users\사용자명\.m2\repository에서 해당 라이브러리가 포함된 폴더를 삭제한 후 프로젝트에서 Maven > Update Project를 실행한다. 경로는 그룹아이디와 아티팩트 아이디로 구분되기 때문에 쉽게 찾을 수 있다.
이때 eclipse의 프로젝트가 해당 라이브러리를 참조하고 있으면 삭제가 안되기 때문에 eclipse를 종료 후 라이브러리를 삭제하고 다시 업데이트의 순으로 작업하자.
가끔 정말 운이 없을 때에는 여러번 해도 안될 경우가 있는데 .m2 폴더 자체를 날려보는 시도도 해볼만 하다. 다시 전체를 다운로드 해야 하기 때문에 시간이 걸리긴 하지만 되기만 한다면야...
default-testResourcesof goal 오류
pom.xml에서 아래의 오류가 발생한다면
Execution default-testResources of goal org.apache.maven.plugins:maven-resources-plugin:2.6:testResources failed: