20170310 tech day-1st-maven을 이용한 프로그램 빌드-박준홍
TRANSCRIPT
목록
1. Maven 이란?
2. 회사 Maven 살펴보기
3. Maven을 이용한 프로젝트 빌드
4. Build plugin을 이용한 빌드 커스터마이징
5. 용어 설명
2
1. Maven 이란?
• 제공 사이트: Apache Maven (http://maven.apache.org)
• 사용자에 따른 의미
– 일반적인 사용자: 소스 코드로부터 배포 가능한 산출물을 생성하는 build tool
– 빌드 엔지니어와 관리자: 보다 용이한 프로젝트 관리 툴
• Ant와의 차이점
– Ant: 전처리, 컴파일, 패키징, 테스팅, 배포 작업이 초점
– Maven: 빌드 기능을 바탕으로 plugin을 이용하여 종합적인 기능 제공
• 빌드 기능과 더불어 보고서 작성, 웹 사이트 생성, 구성원 간의 소통 기능
3
Paclage
Test
Report
Release
Build
• Build • 소스 코드를 컴파일 한다.• 테스트 코드를 컴파일 한다. • 기타 패키지 생성을 위한 바이너리를 생성한다.
• Package • 배포 가능한 jar, war, exe 파일 등을 생성한다.
• Test• 단위 테스트(Unit Test) 등을 실행한다.• 빌드 결과가 정상적인지 점검한다.
• Report• 빌드/패키지/테스트 결과를 정리하고, 빌드 수행 리포트를 생성한다.
• Release• 빌드 후 생성된 아티팩트(artifact)를 로컬 혹은 원격 저장소에 저장(배포)한다.
4
• Ant 파일 구조 • Maven POM 파일 구조
1. Maven 이란? (계속)
2. 회사 Maven 살펴보기
• http://maven.ymtech.co.kr/nexus
• Repository
– Public Repository: 라이브러리를 제공하는 최상위 경로
– Central: http://repo1.maven.org/maven2/ 에 연결된 proxy
– 3rd party: com 에서 제공하는 라이브러리를 직접 제공하는 저장소
– Releases/Snapshots: 직접 배포/스냅샷 버전을 제공하는 저장소
• Type
– hosted: 회사 Maven에서 직접 제공하는 형태
– proxy: 외부 Maven Repository에 연결할 수 있는 형태.
5
3. Maven을 이용한 프로젝트 빌드
• 5가지 핵심 개념
– Plugin
• Goal의 집합체, 실행 기능을 수행하는 단위로써 이를 통해서 기능이 확장됨.
• Ant의 Task 또는 Target(?) 과 유사.
• Maven은 여러 개의 Goal을 묶어 Lifecyle phases 만들고 실행. (예: mvn install )
– Lifecycle
• 논리적인 작업 흐름인 단계의 집합.
• 3개의 표준 Lifecycle
– default: 빌드 프로세스용 모델
» compile, test, package, install, deploy, 등
– clean: 산출물 제거
» pre-clean, clean, post-clean
– site: 문서와 사이트 작성
» pre-site, site, post-site, site-deploy
– Dependency
• 라이브러리 다운로드 자동화
• Maven은 선언적 방식이며, 라이브러리를 관리
– Profile
• 서로 다른 환경을 위한 다른 빌드 설정
– POM (Project Object Model)
• 프로젝트 당 하나씩 존재하며, 프로젝트 정보와 dependency 설정 및 정보를 포함한다.
6
4. Build plugin을 이용한 빌드 커스터마이징
Basic
External
Tool
Single file
Executable
Multi file
Executable
Packaged
7
4. Build plugin을 이용한 빌드 커스터마이징 (계속)
• 기본 Maven 빌드 이용하기
– 웹 서비스, 응용 프로그램
• POM
– finalName: 빌드 결과물 파일명 지정
– plugins > plugin > artifactId
• maven-eclipse-plugin
– configuration에 설정된 정보에 따라 수행
– springframework 빌드용
• maven-compiler-plugin
– 소스 컴파일 수행
• maven-source-plugin
– 빌드 결과물에 소스 파일 추가
8
4. Build plugin을 이용한 빌드 커스터마이징 (계속)
• 외부 빌드 툴 연결하기
– maven-antrun-plugin
• POM
– defaultGoal: 결과물을 로컬 장비에 설치
– sourceDirectory/resources: 소스 파일 및 리소스파일 경로 설정
– plugins > plugin > artifactId
• maven-antrun-plugin
– ant을 이용한 빌드 실행
– build.xml과 goal 설정
– plugins > plugin > dependencies
• 프로젝트용이 아닌 빌드만을 위한 dependencies 설정
9
4. Build plugin을 이용한 빌드 커스터마이징 (계속)
• 독립 실행 버전 생성하기
– 단일파일: libraries 포함
• POM
– plugins > plugin > artifactId
• maven-assembly-plugin
– 외부 설정 파일을 통한 기능 실행
• configuration
– manifest를 통한 실행 클래스 설정
– 컴파일 결과물과 참조 libraries를 하나의 실행 파일로 생성
10
4. Build plugin을 이용한 빌드 커스터마이징 (계속)
• 독립 실행 버전 생성하기
– 다중파일: 실행파일과 libraries 별도
• POM
– plugins > plugin > artifactId
• maven-jar-plugin
– manifest 를 통한 실행 클래스 설정
– 빌드 결과물 경로 설정
• maven-resources-plugin
– classpath에 포함되지 않는 설정 파일 및 기타 리소스를 빌드 결과물에 포함
• maven-dependency-plugin
– 참조 libraries을 빌드 결과물에 포함
11
4. Build plugin을 이용한 빌드 커스터마이징 (계속)
• 빌드 생성물을 포함한 배포버전 생성하기
– 소스 컴파일 결과물, 설정파일 및 라이브러리 파일을 하나의 파일로 생성하여 배포
• POM
– plugins > plugin > artifactId
• maven-assembly-plugin
– 외부 설정파일을 통한 기능 실행
– executions 설정을 통한 실행 대상 설정
12
5. 용어 설명
• Project – 메이븐이 작업을 수행하는 대상
• Pom – 메이븐이 프로젝트를 처리하는 필요한 정보를 제공하는 파일.
• Artifact – 프로젝트에 필요한 jar, war, pom 혹은 다른 것들.
• Dependency – 프로젝트에 필요한 다른 프로젝트에 존재하는 파일들
• Coordinates – 아티팩트(artifact)를 식별하는데 필요한 속성들의 조합.
• Repository – 아티팩트 (artifact) 들이 위치하는(저장된) 장소.
• Lifecycle – 아티펙트(artifact)를 생성하는 절차들의 집합.
• Phase – 라이프사이클을 구성하는 하나 이상의 절차
• Plugin (Mojo) – 확장(추가) 가능한 기능
• Install – 아티펙트를 로컬 디렉토리에 저장하는 행위 ~/.m2/repository
• Deploy – 아티펙트를 로컬 저장소에 저장하는 행위
• Reactor – 의존성을 분석하고, 해결한 후 빌드를 수행하는 프로세스.
13
Q & A
14