카테고리 없음

Maven 기초 : Maven 동작 및 개념 정리

flowertaekk 2021. 8. 20. 08:44

최근 이직에 성공했고, 여태까지 gradle만 사용하다가 maven을 사용하게 되서 공부를 하게 되었습니다!

 

여러 프로젝트에서 활발하게 쓰이는 툴이기도 하고, 초보(newbie)의 관점에서 작성하면 '신입개발자분들이나 공부를 시작하신 분들에게 도움이 되지 않을까?'라는 생각이 들어서 블로깅을 하게되었습니다.


먼저 Maven이 어떻게 동작하는지 그림으로 볼까요?

간단히, 아래와 같은 흐름으로 작동합니다.

  1. 설정파일(pom.xml)을 확인하고
  2. 로컬 컴퓨터(Local Repository)에 의존하는 라이브러리를 가지고 있는지 확인하고
  3. 로컬 컴퓨터(Local Repository)에 의존하는 라이브러리가 없다면,
    Remote Repository(ex: https://mvnrepository.com, 사내 라이브러리 관리 서버 등등)에서 다운받아서
  4. 로컬 컴퓨터(Local Repository)에 저장
  5. 프로젝트 빌드 및 실행

 

그럼 설정파일(pom.xml)은 뭘까요?

pom(Project Object Model)파일은 해당 프로젝트를 빌드/실행하는데에 있어서 메이븐이 확인하고 가져와야할 라이브러리 리스트를 작성하는 파일입니다.

 

pom.xml은 3가지로 구성됩니다!

  1. 프로젝트 메타 데이터: 프로젝트명.. 등등
      <groupId>com.example</groupId>
      <artifactId>demo</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <name>demo</name>
      <description>Demo project for Spring Boot</description>
      <properties>
        <java.version>11</java.version>
      </properties>​
  2. 의존성(라이브러리): 프로젝트가 의존하는 라이브러리 리스트 (http://search.maven.org 에서 검색 가능!)
      <dependencies>
        <dependency>
          <groupId>org.springframework.boot</groupId> -- 회사명
          <artifactId>spring-boot-starter-test</artifactId> -- 프로젝트명
          <version>O.O.O</version> -- optional
          <scope>OOO</scope> -- optional
        </dependency>
      </dependencies>​
  3. 플러그인: 메이븐 동작 커스텀 기능! (나중에 자세히 설명할게요!)

 

그럼 이제 로컬 컴퓨터(Local Repository)에 대해서 알아볼까요?

로컬 컴퓨터라는 표현이 오해를 가져올 수도 있는 표현이기는 하지만.. '개발에 입문하신 분들도 이해하기 편하시지 않을까?' 라고 생각해서 쓴 것이니 이해해주세요!

 

Local Repository는 컴퓨터 내에 maven이 관리하는 라이브러리 저장소입니다!

 

Windows의 경우에는 c:\Users\<user-home>\.m2\repository

Linux/Max의 경우에는 ~/.m2/repository

 

에 위치하고 있습니다!

 

pom.xml에 새로운 라이브러리 의존을 추가하면 ~/.m2/repository에 새로운 파일이 자동으로 다운로드 되는 것을 확인하실 수 있습니다! (Maven refresh 필요..!)

 

 

마지막으로, Remote Repository 입니다!

Remote Repository은 어떻게 생긴 저장소인지 확인해볼까요.

(https://repo.maven.apache.org/maven2/) 에서 확인할 수 있습니다.

 

새로운 라이브러리 의존을 추가했을 때 로컬 리포지토리에 추가되는 파일들을, 위의 Remote Repository에서 똑같이 확인할 수 있습니다!

 

 

간단하게 메이븐이 어떻게 동작하는지에 대해 알아보았습니다!

코로나 때문에 힘든 시기이지만.. 일본에서 개발을 하고 있는 저는 한국에 못돌아가니까 너무 힘드네요.

한국에 돌아갈 날을 기대하며 열심히 공부하는 수 밖에 없습니다..!

 

한국에 계신 분들도 힘내시고, 해외에서 열심히 생활하고 계신 분들도 힘내세요!