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