Maven

이지윤·2022년 4월 3일
0

Maven 소개

Maven 정의

  • 프로젝트 관리 도구
  • 빌드 자동화 기능프로젝트 관리 기능을 제공

프로젝트(라이브러리) 관리

  • pom.xml 파일을 이용하여 프로젝트 관련된 jar 파일을 다운로드하고 관리
  • 프로젝트 산출물을 일관된 구조로 관리

빌드 자동화

  • 빌드 작업들을 간단하고 쉽게 그리고 일관성 있게 수행할 수 있는 통합 환경을 제공
  • 빌드는 소스 코드 파일을 실행 코드로 변환하여 배포하는 과정

프로젝트 관리 기능

프로젝트 관리 기능

  • 일반 개발자 프로젝트 관리 설정 메이븐이 미리 정의한 설정들로 대체
  • 정형화된 프로젝트 디렉토리 구조 관리 (pom.xml)
  • 의존성 관리 기능 : 편리한 라이브러리 관리 기능(pom.xml, Repository)
  • 빌드 프로세스를 관리(pom.xml) : 플러그인 설정을 통해 빌드 자동화

프로젝트 디렉토리 기본 설정 (pom.xml)

  • src/main/resources 클래스 패스로 사용되는 디렉토리

  • 주요 설정 정보

    1. 소스 코드 (source code) → ${basedir}/src/main/java
    2. 설정 파일 경로 (resources) → ${basedir}/src/main/resources
    3. 테스트 (Tests) → ${basedir}/src/main/test
    4. distributable JAR → ${basedir}/target
    5. 컴파일된 바이트 코드 → ${basedir}/target/classes
  • 웹 디렉토리 구성

    • 자바 소스와 리소스 디렉토리는 메이븐 기본 디렉토리를 유지하고 웹 자원을 관리하는 별도의 src/main/webapp 디렉토리를 사용
  • 기본 디렉토리 구성

의존 관계(라이브러리) 설정 (pom.xml)

  • 프로젝트 당 한 개의 pom.xml 파일 관리
  • 최상위 엘리먼트 : project
  • 3개의 필수 필드를 가짐 (groupId, artifactId, version)
    • groupId : 프로젝트 조직 고유 도메인 ex) org.tukorea
    • artifactId : 프로젝트 명 ex) myhomework
    • version : 프로젝트 버전
  • 프로젝트 의존관계의 라이브러리 관리 : dependency

프로젝트 빌드 설정

  • 프로젝트 기본 정보
  • 저장소
  • 프로퍼티
  • 디렉토리 구조
  • 플러그인 (plugins)
  • 골(goals)

Maven Repository

  • 메이븐 저장소는 프로젝트에 사용되는 프로젝트 jar 파일, 라이브러리 jar파일들이 위치
  • 3가지 타입이 존재
    • 지역 저장소 : 메이븐을 빌드할 때 다운로드하는 라이브러리 플러그인을 관리하는 저장소
    • 중앙 저장소 : 오픈 소스 라이브러리, 메이븐 플러그인 메이븐 아키타입을 관리하는 저장소
    • 원격 저장소 :별도의 메이븐 저장소를 설치해 중앙 저장소에 존재하지 않는 라이브러리 관리

의존 라이브러리 적용 스코프

  • 의존 라이브러리를 적용할 수 있는 시점을 제한
  • Scope 설정
    • compile : 스코프 설정하지 않을 때의 기본 스코프
    • provided : 컴파일 시 직접 의존성을 참조, 런타임 시 다른 환경에서 의존성 제공 (해당 컨테이너의 서블릿 API)
    • runtime : 컴파일 시 사용하지 않고, 애플리케이션 실행 시 사용되는 라이브러리 경우만 설정
    • test : 테스트하는 시점에만 사용하는 라이브러리의 스코프를 설정할 때 사용 (JUnit)
    • system : provided와 비슷하지만, 직접 jar 파일을 제공해야 함
    • import : 다른 POM설정 파일에 정의된 의존 관계 설정을 현재 프로젝트로 가져옴

빌드 자동화 기능

  • 메이븐은 소프트웨어 빌드를 위한 공통 인터페이스를 제공하는 프레임워크
  • 플로그인 설정을 통해 기능을 위임

빌드 라이프 사이클

  • 빌드 단계 (컴파일, 테스트, 페이징, 배포)
  • 기본 라이프 사이클
    • 여러 단계의 페이즈(Phase)로 나뉜다
    • 각 페이즈는 의존관계를 가진다
    • compile, test, package deploy 순으로 진행
    • 기본 페이즈
      • 리소스 준비
      • 컴파일
      • 테스트
      • 패키지
      • 설치 (install)
      • 배포 (deploy)
  • clean 라이프 사이클
    • clean 페이징 -> 이전 빌드에서 생성된 모든 파일들을 삭제
  • site 라이프 사이클
    • site, site-deploy 페이즈 -> 생성된 문서들을 대상 사이트로 배포

Goal

  • 각 빌드 단계에서 수행되는 작업
  • 빌드 라이프 사이클 -> 하나 이상의 골을 수행하는 페이즈들로 구성
  • 각 페이즈 별로 플러그인 작업을 수행 -> Goal

플러그인

  • 실제 골을 수행
  • 대부분의 기능들은 플러그인을 통해 제공
  • 플러그인 종류
    • clean
    • compiler
    • surefire
    • jar
    • war
    • javadoc
    • antrun
profile
초보자

0개의 댓글