본문 바로가기

Development Note

Apache Maven : 2. Repository 개념 정리

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

일단 Maven 이 가져다 주는 이점을 생각해 보아야함.

여러 삽질을 하며 써보니까 Maven 이 가져다 주는 이점 중에 가장 주된 내용은 의존성 설정의 간결함, Template Project 그리고 동일한 방법의 배포 인 것 같다.

통상적으로 1인 개발을 할때도 문제가 되는 점들이

 

  1. 의존성 설정 (각종 jar 파일으로 부터의 해방)
    • mybatis, springframework 등의 여러 서드파티 라이브러리들을 사용함에 있어서 의존성을 한번 정의 해두면 매우 편리하게 Project를 구성할 수 있다.
  2. 또 다른 신규 개발 시의 또 한번의 프로젝트 환경 설정
    • 1번의 의존성과 아주 밀접한 연관을 가질 수 있는데, 이를 미리 등록 해 두면 프로젝트 시작에 아주 용이하게 사용할 수 있다. 단순히 zip 파일같은걸로 압축 해두었다가 두고두고 쓰는 형태로 가지 않아도 된다.
  3. 배포 방법
    • 저마다의 배포방식이 있는데, 이는 사람이 직접 수동으로 배포하는 경우 그 환경도 저마다 다를 수 있으니 Maven 을 통한 빌드와 배포가 동일한 조건으로 배포하도록 하여 오류를 줄여줄 수 있다.
이렇게 세가지 정도로 정리 해볼 수 있다. 이렇게 된다면 Repository 가 하는 역할이 무엇인지를 알 수 있을 것 같다. 저런 환경이나 의존성 또는 배포 방법을 버전에 따라서 스냅샷들을 만들어 가면서 마치 SVN 의 revision 같은 모양새로 형상들을 관리해주기 위한 저장소 정도로 생각하면 되겠다. Repository 에 Template Project (Maven 에서는 ArchType 이라 한다) 를 등록 할 수도 있고, 작업한 프로젝트의 스냅샷들을 빌드 하여 Repository에 저장 하기도 하고 하는 절차를 할텐데, 어떠한 방식으로 얘네들이 변화하고 움직이느냐는 중요치 않고 일단 Repository 라는 녀석의 개념 자체가 저장소인데 과연 "무엇을 위한" 저장소 있지를 잘 파악하는 것이 좋겠다.
SVN 의 그것과 헷깔리지 않으려면 각 하나의 소스들의 형상 관리하는 것이 SVN Repository 라면 Maven Repository 는 빌드된 패키지의 형상을 관리하는 것이라고 보면 되겠다.
SVN 은 지극시 소스 중심이고, Maven 은 패키지 중심이라고 보면 될 듯 하다. (결론적으로는 아예 용도가 다르므로 "저장" 이라는 키워드에 낚이지 말자.