본문 바로가기
Learn IT Knowledge/Computer Science

[ 전공 지식 ] Maven

by ${코딩몬} 2018. 1. 5.


Evernote 전공 정리 노트 불러오기



Computer Science

Apache Maven



Maven
  • 아파치 메이븐(Apache Maven)
  • 메이븐(Maven)이란
    • 대다수의 사용자
      • 소스 코드로부터 배포 가능한 산출물(artifact)을 빌드(build)하는
      • "빌드 툴(build tool)"
    • 빌드 엔지니어, 프로젝트 관리자 들
      • 무엇인가 조금 더 편리한
      • "프로젝트 관리 툴"
  • 엔트(Ant)와 차이 점
    • 엔트(Ant)와 같은 빌드 툴은 전적으로 전처리(prepocessing), 컴파일(compilation), 패키징(packaging), 테스팅(testing), 배포(distribution) 하는데 초점이 맞추어져 있다.
    • 메이븐과 같은 프로젝트 관리 툴은 빌드 툴을 바탕으로 여러 기능들으 종합적으로 제공한다.
    • 덧붙이면 메이븐은 빌드에 관한 기능들과 보고서 작성, 웹 사이트 생성, 작업 팀의 구성원 간 소통 기능을 제공한다.
  • 메이븐 활용 패턴 5단계의 흐름
    1. Build
      • 소스 코드를 컴파일 한다.
      • 테스트 코드를 컴파일 한다.
      • 기타 패키지 생성을 위한 바이너리를 생성한다.
    2. Package
      • 배포 가능한 jar, war, exe 파일 등을 생성한다.
    3. Test
      • 단위 테스트(Unit Test) 등을 실행한다.
      • 빌드 결과가 정상적인지 점검한다.
    4. Report
      • 빌드/패키지/테스트 결과를 정리하고, 빌드, 수행 리포트를 생성한다.
    5. Release
    • 빌드 후 생성된 아티팩트(artifact)를 로컬 혹은 원격 저장소에 저장(배포)한다.
  • 메이븐 5가지 핵심 개념
    1. Plugin(플러그인)
      • 메이븐은 플러그인 실행 프레임워크이다.
      • 메이븐의 플러그인 메커니즘에 의해 기능이 확장된다.
        • (모든 작업은 플러그인이 수행한다.)
      • 사용자 관점에서는 엔트(Ant)의 태스크(task) 혹은 타겟(target)과 유사하다.
      • 플러그인은 다른 산출물(artifacts)와 같은 저장소에서 관리된다.
      • 플러그인은 골(goal)의 집합이다.
    2. Lifecycle(라이프사이클)
      • 메이븐의 동작 방식은 일련의 단계(phase)에 연계된 goal을 실행하는 것이며, 논리적인 작업 흐름인 단계의 집합이 라이프사이클이다.
        • 빌드 단계(build phases)들은 사전 정의된 순서대로 실행된다.
        • 모든 빌드 단계는 이전 단계가 성공적으로 실행되었을 때, 실행된다.
      • 빌드 단계는 goal들로 구성된다.
        • goal은 특정 작업, 최소한의 실행 단위(task)이다.
        • 각 단계는 0개 이상의 goal과 연관(associate)된다.
      • 메이븐은 3개의 표준 라이프사이클을 제공한다.
        1. clean
          • 빌드 시 생성도었던 산출물을 지운다.
        2. default
          • 일반적인 빌드 프로세스를 위한 모델이다.
        3. site
          • 프로젝트 문서와 사이트 작성을 수행한다.
    3. Dependency(의존성)
      • 라이브러리 다운로드 자동화
        • 더 이상 필요한(의존성 있는) 라이브러리를 하나씩 다운로드 받을 필요가 없다.
        • 필요하다고 선언만 하면 메이븐이 자동으로 다운로드 받아준다.
      • 메이븐은 선언적이다.
        • 명령식이 아니다
        • 사용되는 jar 파일들을 어디서 다운로드 받고, 어느 릴리즈(버전)인지 명시하면, 코딩을 하지 않아도 메이븐이 알아서 관리한다.
          • 재 다운로드, 최신 버전 설치 등
      • 메이븐이 관리한다.
        • 라이브러리(lib) 디렉터리를 생성할 필요가 없다.
        • 이클립스 내에서 라이브러리, 클래스패스 환경 설정을 할 필요도 없다.
    4. Profile(프로파일)
      • 서로 다른 대상 환경(target environment)를 위한 다른 빌드 설정
        • 다른 운영체제
        • 다른 배포 환경 
      • 동작 방식(Activation)
        • -P 명령줄 실행환경(CLI) 옵션
        • 환경 변수(enviroment variable) 기반
      • 메이븐은 정상 절차(step) 이외에 프로파일을 위한 절차를 추가로 수행한다.
    5. POM
      • POM = Project Object Model, 프로젝트 객체 모델
      • 프로젝트 당 하나의 pom.xml
        • 각각의 프로젝트는 pom.xml 파일을 하나씩 가진다.
        • pom은 프로젝트 자체와 의존성에 대한 설정 및 정보를 포함한다.
        • 메이븐을 pom.xml을 읽어, 프로젝트를 가공하는 방법을 이해한다.
      • 3가지 "coordinates"를 이용해 자원을 식별한다.
      1. 그룹 ID(Group ID)
        • ex> com.acme
      2. 아티펙트 ID(Artifact ID)
        • ex> common
      3. 버전(Version)
        • ex> 1.0



'Learn IT Knowledge > Computer Science' 카테고리의 다른 글

[ 전공 지식 ] Internet 과 Web 차이  (1) 2018.01.09
[ 전공 지식 ] HTTP  (0) 2018.01.08
[ 전공 지식 ] Java Filter  (0) 2018.01.03
[ 전공 지식 ] Java Servlet  (0) 2018.01.03
[ 전공 지식 ] DispatcherServlet  (0) 2018.01.03