20170310 tech day-1st-maven을 이용한 프로그램 빌드-박준홍

14
TechDay - 1st Maven을 이용한 프로그램 빌드 박준홍 ( [email protected] ) 2017-03-10

Upload: ymtech

Post on 29-Jan-2018

114 views

Category:

Software


8 download

TRANSCRIPT

Page 1: 20170310 tech day-1st-maven을 이용한 프로그램 빌드-박준홍

TechDay - 1st

Maven을 이용한 프로그램 빌드

박준홍 ( [email protected])

2017-03-10

Page 2: 20170310 tech day-1st-maven을 이용한 프로그램 빌드-박준홍

목록

1. Maven 이란?

2. 회사 Maven 살펴보기

3. Maven을 이용한 프로젝트 빌드

4. Build plugin을 이용한 빌드 커스터마이징

5. 용어 설명

2

Page 3: 20170310 tech day-1st-maven을 이용한 프로그램 빌드-박준홍

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)를 로컬 혹은 원격 저장소에 저장(배포)한다.

Page 4: 20170310 tech day-1st-maven을 이용한 프로그램 빌드-박준홍

4

• Ant 파일 구조 • Maven POM 파일 구조

1. Maven 이란? (계속)

Page 5: 20170310 tech day-1st-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

Page 6: 20170310 tech day-1st-maven을 이용한 프로그램 빌드-박준홍

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

Page 7: 20170310 tech day-1st-maven을 이용한 프로그램 빌드-박준홍

4. Build plugin을 이용한 빌드 커스터마이징

Basic

External

Tool

Single file

Executable

Multi file

Executable

Packaged

7

Page 8: 20170310 tech day-1st-maven을 이용한 프로그램 빌드-박준홍

4. Build plugin을 이용한 빌드 커스터마이징 (계속)

• 기본 Maven 빌드 이용하기

– 웹 서비스, 응용 프로그램

• POM

– finalName: 빌드 결과물 파일명 지정

– plugins > plugin > artifactId

• maven-eclipse-plugin

– configuration에 설정된 정보에 따라 수행

– springframework 빌드용

• maven-compiler-plugin

– 소스 컴파일 수행

• maven-source-plugin

– 빌드 결과물에 소스 파일 추가

8

Page 9: 20170310 tech day-1st-maven을 이용한 프로그램 빌드-박준홍

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

Page 10: 20170310 tech day-1st-maven을 이용한 프로그램 빌드-박준홍

4. Build plugin을 이용한 빌드 커스터마이징 (계속)

• 독립 실행 버전 생성하기

– 단일파일: libraries 포함

• POM

– plugins > plugin > artifactId

• maven-assembly-plugin

– 외부 설정 파일을 통한 기능 실행

• configuration

– manifest를 통한 실행 클래스 설정

– 컴파일 결과물과 참조 libraries를 하나의 실행 파일로 생성

10

Page 11: 20170310 tech day-1st-maven을 이용한 프로그램 빌드-박준홍

4. Build plugin을 이용한 빌드 커스터마이징 (계속)

• 독립 실행 버전 생성하기

– 다중파일: 실행파일과 libraries 별도

• POM

– plugins > plugin > artifactId

• maven-jar-plugin

– manifest 를 통한 실행 클래스 설정

– 빌드 결과물 경로 설정

• maven-resources-plugin

– classpath에 포함되지 않는 설정 파일 및 기타 리소스를 빌드 결과물에 포함

• maven-dependency-plugin

– 참조 libraries을 빌드 결과물에 포함

11

Page 12: 20170310 tech day-1st-maven을 이용한 프로그램 빌드-박준홍

4. Build plugin을 이용한 빌드 커스터마이징 (계속)

• 빌드 생성물을 포함한 배포버전 생성하기

– 소스 컴파일 결과물, 설정파일 및 라이브러리 파일을 하나의 파일로 생성하여 배포

• POM

– plugins > plugin > artifactId

• maven-assembly-plugin

– 외부 설정파일을 통한 기능 실행

– executions 설정을 통한 실행 대상 설정

12

Page 13: 20170310 tech day-1st-maven을 이용한 프로그램 빌드-박준홍

5. 용어 설명

• Project – 메이븐이 작업을 수행하는 대상

• Pom – 메이븐이 프로젝트를 처리하는 필요한 정보를 제공하는 파일.

• Artifact – 프로젝트에 필요한 jar, war, pom 혹은 다른 것들.

• Dependency – 프로젝트에 필요한 다른 프로젝트에 존재하는 파일들

• Coordinates – 아티팩트(artifact)를 식별하는데 필요한 속성들의 조합.

• Repository – 아티팩트 (artifact) 들이 위치하는(저장된) 장소.

• Lifecycle – 아티펙트(artifact)를 생성하는 절차들의 집합.

• Phase – 라이프사이클을 구성하는 하나 이상의 절차

• Plugin (Mojo) – 확장(추가) 가능한 기능

• Install – 아티펙트를 로컬 디렉토리에 저장하는 행위 ~/.m2/repository

• Deploy – 아티펙트를 로컬 저장소에 저장하는 행위

• Reactor – 의존성을 분석하고, 해결한 후 빌드를 수행하는 프로세스.

13

Page 14: 20170310 tech day-1st-maven을 이용한 프로그램 빌드-박준홍

Q & A

14