[쉽게 따라하는 자바 웹 개발] AS 1. 메이븐 관련 이슈 정리

(전체 화면에 720hd 화질 선택하시면 코드까지 잘 보이실 겁니다.)

첫번째 애프터 서비스로 프로젝트 import시 발생하는 메이븐 관련 이슈 원인과 그 해결책을 설명한 동영상을 올렸습니다.

먼저, 메이븐 의존성을 제대로 못가져오는 문제인데요. 이 문제로 두분이 봄싹 그룹스에 질문을 올려주셨습니다.

jkee님: https://groups.google.com/forum/?fromgroups=#!topic/springsprout/KMkA8iGUtkQ

chicken-hit님: https://groups.google.com/forum/?fromgroups=#!topic/springsprout/EmBvNPe3nUY

이 두분은 프로젝트를 import 하고나서 메이븐 프로젝트를 빌드하는 과정 중에 Update Maven Dependencies라는 과정이 있는데.. 그 때 필요한 의존성을 받아오다가.. 네트워크 상황이 안좋거나, 메이븐 중앙 저장소가 바쁘거나해서.. 필요로하는 의존성을 못가져온 경우입니다.

이때 의존성을 못가져오는 경우가 두가지가 있는데..

  • 완전히 jar 파일 자체를 못가져온 경우.
  • 또는 jar파일을 가져오다가 중간에 멈춘 경우.

첫 번째 경우라면 메이븐 의존성을 다시 업데이트 하도록 Maven -> Project Update(이전에는 Update Dependencies라는 메뉴가 있었는데 이걸로 대체되었나봅니다.)를 실행하면 받아오실 수 있는데요. 두번째 경우라면 그렇게 해도 다시 받아오지 않을수 있습니다. 따라서 그럴 떄는 로컬 메이븐 저장소(보통 유저 홈디렉토리/.m2/repository)에서 해당 의존성 디렉토리를 삭제하시고 다시 프로젝트 업데이트나 아에 프로젝트를 삭제하고 추가하면 메이븐 의존성을 제대로 받아올 수 있습니다만.. 백프로 확신을 못하는거죠. 그때 다시 받아올 때 또다시 네트워크 상황이 좋치 않거나, 메이븐 중앙 저장소가 바쁘면.. 같은 일이 재발할 수 있습니다.

그래서 최후의 수단으로는 로컬 메이븐 저장소에 직접 JAR 파일들을 경로에 맞춰서 넣어주시는건데요. 그건 방금 제 로컬 저장소를 압축한 repository.zip 파일을 받아서 여러분의 로컬 저장소에 덮어써 주시는 겁니다.

http://whiteship.me/book/repository.zip

이 파일을 받으셔서 여러분의 홈 디렉토리/.m2/repository에 복사해 넣으신 다음에 프로젝트 import를 다시 해보세요. 그럼 메이븐 관련 문제는 잘 해결될 겁니다.

신순웅님: https://groups.google.com/forum/?fromgroups=#!topic/springsprout/QrvoPfpE7pM

신숭웅님의 이슈는 처음에 제가 잘못보고 이것도 메이븐 의존성 관련 이슈인줄로 착각했습니다. 그런데 다시 로그를 보니까 이건 메이븐 의존성 문제가 아니라 메이븐 빌드를 실행할때 실행할 goal을 아무것도 적지 않았을 때 발생하는 로그였습니다.

그래서 이건 이슈가 아니라.. 지금 뭔가 빌드를 잘못실행하고 계신걸로 추정이되고요. 무얼 하셨을 때.. 제 책의 어느 부분을 따라하고 계실때 발생한 에러인지 조금 더 전후 상황 정보가 필요한 상황입니다.

어쨌든 지금 저 로그는 제가 방금 동영상에서도 설명드렸지만, 메이블 빌드를 아무런 goal없이 실행할 때 발생하는 로그로… 문제 상황은 아니고, 단순히 메이븐 빌드를 잘못 사용하고 계신걸로 추정됩니다.

부디 제 책을 읽고 계신분들이 무사히 제 책을 즈려밟고 올라서시기를 기원하며 그럼 이것으로 첫번째 애프터 서비스를 마치겠습니다.

제 책을 보시다가 궁금하시거나 개선하면 좋을 부분들은 계속해서 봄싹 그룹스에 의견을 남겨주시면 저 말고도 다른 분들의 의견이나 도움도 받으실 수 있으니까요. 어려워 마시고 편하게 글 남겨주세요.

감사합니다.

12 thoughts on “[쉽게 따라하는 자바 웹 개발] AS 1. 메이븐 관련 이슈 정리”

  1. 오랜만에 시간이 나서 맥 장비에서 기선님 책 내용을 따라하고있는데,
    마찬가지의 메이븐 오류가 계속 났습니다.
    레파지토리 복사하고, zip으로 압축된 프로젝트를 다시 import하니,
    해결…

    수고하세요.

    1. 다행입니다. 혹시 다음에 다른 에러로 또 고생하시게되면 알려주세요. 이 내용은 다음에 개정판(을 쓰게되면;;) 쓸 때 꼭 넣어야겠네요.

      감사합니다.

  2. 와! 블로그와 동영상을 통해서 A/S까지 해주시는군요 ^^

    제 경험상으로 Dependency 문제 생기면, Eclipse와 m2e를 쓴다고 했을때

    1. Project 에 오른쪽 버튼 클릭 -> Maven -> Update Project
    2. Update Project configuration from pom.xml 과 Clean projects 에 체크 된 대로 그냥 두고
    Force Update of Snapshots/Releases 에도 체크 표시한 후에 OK 클릭

    이래도 해결 안되면, dependency 문제를 일으키는 녀석을 .m2/repository에서 폴더째로 제거 후에 위의 과정 반복

    그후에 dependency 말고 프로젝트 상에 다른 에러가 보이면,
    Eclipse 메뉴에서 Project -> Clean -> 해당 프로젝트 선택후 OK

    Clean build후에도 문제가 있으면 Clean build 한번더 수행
    (QueryDSL 쓸경우 target/generated-sources/java 에 있는 파일들 다 삭제후
    Clean build)

    보통 이렇게 하면, 대부분의 경우는 해결이 되었습니다.

    이런걸로 해결이 안된 경우는 해당 mavne repository 가 다운되거나 해서
    응답을 안 하는 경우라던가, maven plugin에 문제가 있는 경우가 있었군요.
    (혹은 코드가 너무 복잡해서 maven plugin이 사용하는
    3rd party compiler가 이해를 못하는 경우. 예. AspectJ compiler)

    1. ㅋㅋ역시 비슷하게 해결하시는군요. Force Update of Snapshots/Releases 이 옵션도 있는지 몰랐네요.

      감사합니다. 🙂

    2. 해결되었어요. 우왕~ 굳
      감사합니다.
      그리고 책 너무 좋아요. 출근할 때 매일 들고다녀요.
      웹개발에 문외한인 저에게 느낌을 가질 수 있게 가이드 해 주네요.

    3. 하~ 장장 5시간 이상 검색질 하다가 이 댓글을 보고 해결됐네여.
      1번에서 해결됨 ㅜ

  3. 초보를 위한 책을 써주셔서 감사합니다.

    스프링 개발자가 되고 싶은데 초보가 보는 스프링은 장벽에 높아서 함부로 도전 하지 못하고 있었습니다.

    이 책을 읽고 다른책을 읽으니 술술 읽히네요, 정말 감사합니다.

    1. ㅋㅋㅋ진짜죠?

      제가 책 쓴 목적이 그거였는데 그러하시다니 정말 기분좋군요.

Leave a Reply

Your email address will not be published. Required fields are marked *