SlideShare une entreprise Scribd logo
1  sur  38
Maven
2011.10.17
Version 1.0
전 성 욱
Maven 메뉴얼
<1>
1. 도구 개요
2. 도구 설치 방법
3. 도구 기능 소개
4. 도구 사용 예제
5. 참고 자료
목 차
Maven 메뉴얼
<2>
1. 도구 개요
1.1 도구 개요
1.2 메이븐 라이프 사이클 구조
1.3 저장소 구조
1.4 POM 파일 구조
Maven 메뉴얼
<3>
1. 도구 개요
1.1 도구 개요
구분 내용
소개
 메이븐은 아파치 소프트웨어 재단의 최상급 오픈 소스 프로젝트이며 원래는 자카르타 터빈(Jakarta Turbine) 프로젝트의 복잡한 빌
드 과정을 관리하기 위해 만들어졌다. 현재 버전 3까지 나오면서 메이븐은 단일 팀 프로젝트에 최적화된 빌드 도구에서 대부분의 소
프트웨어 개발 시나리오에 꼭 필요한 범용 빌드 관리 시스템까지 다양하게 사용하고 있다
라이센스  The Apache Software License, Version 2.0
사용환경  운영체제 : Platform Independent
공식 홈페이지  http://maven.apache.org
주요기능
 의존성 관리
 원격 레파지토리
 빌드 로직에 대한 보편적인 재사용
 도구 이식성과 통합
 쉬운 검색과 프로젝트 산출물 필터링
Maven 메뉴얼
<4>
1.2메이븐라이프사이클구조
메이븐이 기본적으로 제공하는 라이프사이클의 구조를 설명한다.
메이븐은 관례에 따른 방법을 강조하는 형태의 빌드툴이라 라이프 사이클의 기본적인 구조는 대부분의 메이븐 프로젝트가 동일하다.
1.도구개요
Maven 메뉴얼
<5>
1.3저장소구조
메이븐의 저장소 구조를 확인한다.
1.도구개요
Maven 메뉴얼
<6>
1.4POM파일구조[1/3]
POM은 프로젝트의 구조와 내용을 설명하고 있으며 pom.xml 파일에 프로젝트 관리 및 빌드에 필요한 환경 설정, 의존성 관리 등의 정보
들을 기술한다.
프로젝트의 세부 메타 데이터 정보를 포함한다.
1.도구개요
• Project Information : 프로젝트 이름, 프로젝트 URL, 프로젝트에 참여하는 개발자 목록, 프로젝트의 라이선스 같은 기본적인 정보를
관리한다.
• Build Settings : 메이븐 빌드와 관련한 기본적인 빌드 설정을 변경하기 위한 카테고리이다.
• POM Relationships : 대부분의 프로젝트는 다른 라이브러리 또는 프로젝트와 의존 관계를 가지며, 각 프로젝트 사이에서 상속 관계
를 가지는 경우도 있다. 이런 경우 각 프로젝트의 관계를 관리하는 부분이다.
• Build Environment : 모든 프로젝트는 다양한 환경에 배포하는 것이 가능해야 한다. 환경에 따라 변경되는 부분이 발생하는데, 이와
같이 다양한 환경에 따라 다른 설정 정보를 관리하는 것이 이 카테고리이다.
Maven 메뉴얼
<7>
1.4POM파일구조[2/3]
pom.xml 설정파일의 주요 엘리먼트를 설명한다.
프로젝트의 세부 메타 데이터 정보를 포함한다.
1.도구개요
• project : pom.xml 파일의 최상위 엘리먼트
• modelVersion : POM 모델의 버전. 가장 최근 버전이 4.0.0이다. POM 모델이 변경되지 않으면 수정할 필요가 없다.
• groupId : 프로젝트를 생성하는 조직의 고유 아이디를 결정한다. 일반적으로 도메인 이름을 사용한다.
• artifactId : 프로젝트를 식별하는 유일한 아이디를 의미한다. 예를 들어 net.pinsit라는 groupId를 사용하고 있는 조직에 여러 개의 프
로젝트가 있을 수 있다.
• packaging : 프로젝트를 어떤 형태로 패키징할지 결정한다. jar, war, ear, pom 등이 해당된다.
• version : 프로젝트의 현재 버전이다. 개발이 완료된 버전일 경우 1.0, 2.0과 같이 사용하겠지만, 프로젝트 개발 중에는 SNAPSHOT
을 접미사로 사용할 수 있다. SNAPSHOT은 메이븐의 예약어이며, SNAPSHOT을 사용하면 라이브러리를 다른 방식으로 관리한다.
• name : 프로젝트 이름
• url : 프로젝트 사이트가 있으면 사이트 URL을 등록한다.
• dependencies : <dependencies/>엘리먼트와 하위 엘리먼트인 <dependency/>는 프로젝트와 의존 관계에 있는 라이브러리를 관리
한다.
Maven 메뉴얼
<8>
1.4POM파일구조[3/3]
POM파일의 전체적인 구조는 분량이 많은 관계로 실제 내용은 POM의 스키마를 참조하기 바란다.
현재 사용되는 POM 4.0의 스키마는 http://maven.apache.org/maven-v4_0_0.xsd를 참조하기 바란다.
스키마를 보면 전체적인 구조를 이해할 수 있다.
1.도구개요
Maven 메뉴얼
<9>
2. 도구 설치 방법
2.1 도구 다운로드
2.2 도구 설치
2.3 도구 설치 확인
Maven 메뉴얼
<10>
2.1도구다운로드[1/4]
메이븐 공식 홈페이지 [http://maven.apache.org] 에서 OS에 맞는 설치파일을 다운로드 받습니다.
브라우저 주소 창에 주소를 입력하고 메이븐 홈페이지로 이동한 후 다운로드를 위해서 다운로드 페이지로 이동한다
2.도구설치방법
1
Maven 메뉴얼
<11>
2.1도구다운로드[2/4]
다운로드를 원하는 버전을 클릭합니다.
2.도구설치방법
2
Maven 메뉴얼
<12>
2.1도구다운로드[3/4]
원하는 Mirror 사이트를 선택해서 내 컴퓨터에 다운로드를 받습니다.
2.도구설치방법
3
Maven 메뉴얼
<13>
2.1도구다운로드[4/4]
내 컴퓨터의 다운로드 폴더에 다운받은 파일을 확인합니다.
2.도구설치방법
Maven 메뉴얼
<14>
2.2도구설치[1/6]
다운로드 받은 설치 파일을 원하는 폴더에 압축을 풉니다. 이 문서에서는 C드라이브 루트폴더에 설치를 합니다.
압축받은 파일을 C드라이브 루트로 이동하여 압축을 해제합니다
2.도구설치방법
Maven 메뉴얼
<15>
2.2도구설치[2/6]
커맨드라인에서 실행다운로드 받은 설치 파일을 원하는 폴더에 압축을 풉니다. 이 문서에서는 C드라이브 루트폴더에 설치를 합니다.
제어판이나 내 컴퓨터의 속성을 선택한 후 아래 화면에서 고급 시스템 설정을 클릭한다
2.도구설치방법
Maven 메뉴얼
<16>
2.2도구설치[3/6]
시스템 속성의 고급 탭을 클릭하고 아래에 있는 환경 변수를 클릭한다.
2.도구설치방법
Maven 메뉴얼
<17>
2.2도구설치[4/6]
시스템 변수의 새로 만들기를 선택하고 환경 변수를 추가한다.
2.도구설치방법
Maven 메뉴얼
<18>
2.2도구설치[5/6]
아래 내용처럼 M2_HOME과 설치한 폴더를 입력하고 확인을 클릭하여 추가한다.
2.도구설치방법
Maven 메뉴얼
<19>
2.2도구설치[6/6]
다음에 Path의 편집을 클릭하고 변수값에 아래 [%M2_HOME%/bin;]을 추가하고 확인을 클릭하여 추가한다.
2.도구설치방법
Maven 메뉴얼
<20>
2.3도구설치확인
커맨드라인에서 메이븐 명령을 수행하여 설치를 확인한다
커맨드라인에 [mvn –version] 명령을 수행하여 아래와 같이 나오면 정상적으로 설치가 완료된다.
2.도구설치방법
Maven 메뉴얼
<21>
3. 도구 기능 소개
3.1 아키타입 생성
3.2 이클립스용 프로젝트로 변환
3.3 아키타입 테스트
3.4 패키지 생성
Maven 메뉴얼
<22>
3.1아키타입생성[1/2]
메이븐의 아키타입은 프로젝트의 기본 구조를 생성해주는 기능이다.
아키타입을 생성하는 명령을 입력하여 아키타입을 생성한다.
• 커맨드 명령 : mvn archetype:generate –DarchetypeCatalog=internal
• 커맨드 라인에서 입력하면 메이븐의 내부 카테고리의 아키타입을 출력한다(아래 화면 참고).
• 원하는 아키타입을 선택하여 프로젝트를 생성한다
• 이 문서에서는 maven-archetype-webapp 프로젝트를 생성한다
3.도구기능소개
Maven 메뉴얼
<23>
3.1아키타입생성[2/2]
maven-archetype-webapp인 19번을 선택하여 아래 항목을 입력하여 아키타입을 생성한다.
• groupId : net.pinsit
• artifactId : test
• version : 기본값
• package : 기본값
• Y : Y
• 아래 처럼 프로젝트가 생성되었습니다
3.도구기능소개
Maven 메뉴얼
<24>
3.2이클립스용프로젝트로변환[1/5]
생성한 아키타입 프로젝트를 이클립스용 프로젝트로 변환한다.
메이븐으로 생성한 프로젝트를 이클립스에서 사용하기 위해 설정을 추가한다
• 커맨드 명령 : mvn eclipse:clean eclipse:eclipse
• 앞의 eclipse:clean 명령은 이클립스용으로 만들어지는 파일을 삭제하는 명령이다
• 만약에 이클립스용 WTP(Web Tools Platform)프로젝트의 생성을 위해서는 아래와 같은 플러그인을 추가한다
3.도구기능소개
Maven 메뉴얼
<25>
3.2이클립스용프로젝트로변환[2/5]
생성한 이클립스 프로젝트를 이클립스에서 import한다.
이클립스의 File메뉴의 Import를 선택하여 Import창을 연다
3.도구기능소개
1
2
Maven 메뉴얼
<26>
3.2이클립스용프로젝트로변환[3/5]
General의 존재하는 프로젝트를 가져오는 항목을 선택하고 다음으로 넘어간다.
3.도구기능소개
3
4
Maven 메뉴얼
<27>
3.2이클립스용프로젝트로변환[4/5]
생성된 프로젝트를 선택하여 Finish를 선택하여 다음으로 넘어간다.
3.도구기능소개
5
6
Maven 메뉴얼
<28>
3.2이클립스용프로젝트로변환[5/5]
이클립스에 포함된 프로젝트를 확인한다.
3.도구기능소개
Maven 메뉴얼
<29>
3.3아키타입테스트
아키타입으로 생성한 프로젝트의 테스트는 커맨드 라인에서 입력하여 테스트를 수행한다.
3.도구기능소개
• 커맨드 명령 : mvn test
• 아래 화면 처럼 테스트 수행한 내용을 보여준다
Maven 메뉴얼
<30>
3.4패키지생성
아키타입으로 생성한 프로젝트를 패키징한다
pom.xml에 설정된 패키징의 타입으로 패키지가 된다
3.도구기능소개
• 커맨드 명령 : mvn package
• 아래 화면 처럼 패키징하여 war파일이 생성된다
Maven 메뉴얼
<31>
4. 도구 사용 예제
4.1 프로퍼티 추가
4.2 라이브러리 추가
4.3 플러그인 추가
Maven 메뉴얼
<32>
4.1프로퍼티추가
pom.xml에서 사용하는 프로퍼티의 내용을 추가한다.
기존에 생성된 프로퍼티의 항목을 설명하는 것으로 프로퍼티를 설명한다
4.도구사용예제
• pom.xml에 <properties></properties>를 추가하고 사용할 프로퍼티를 추가한다.
• 사용할 프로퍼티명을 <>태그 사이에 입력하고 시작/종료태그 사이에 value를 입력한다.
• pins-core에서 사용한 프로퍼티를 설명한다.
– <java.version>1.6</java.version> : 자바 버전을 1.6으로 설정
– <project.build.sourceEncoding>UTF-8<project.build.sourceEncoding> : pom프로젝트의 Build부분의 인코딩을 UTF-8로 설정
– <spring.version>3.0.5.RELEASE</spring.version> : 스프링의 공통 버전을 3.0.5.RELEASE로 사용하기 위해 추가
– <slf4j.version>1.6.2</slf4j.version> : slf4j의 버전을 1.6.2로 사용하기 위해 추가
– <aspectj.version>1.6.11</aspectj.version> : aspectJ의 버전을 1.6.11로 사용하기 위해 추가
Maven 메뉴얼
<33>
4.2라이브러리추가
pom.xml에서 사용할 라이브러리를 추가한다.
프로젝트에서 사용할 라이브러리를 추가하는 것으로 여기서는 스프링 프레임워크를 추가한 부분만 설명한다.
4.도구사용예제
• pom.xml에 <dependencies></dependencies>사이에 사용을 원하는 라이브러리를 추가하면 됩니다.
• 라이브러리에 검색은 maven의 라이브러리 검색엔진들을 참고하시기 바랍니다 [http://mvnrepository.com]
• 라이브러리는 <dependency>라는 태그안에 groupId, artifactId, version을 명시하여 추가합니다
• 사용 예제는 아래와 같이 하여 라이브러리를 추가할 수 있습니다
Maven 메뉴얼
<34>
4.3플러그인추가
pom.xml에서 사용할 플러그인을 추가한다.
프로젝트에서 사용할 플로그인을 사용하는 부분으로 여기서는 컴파일러의 버전과 인코딩 설정을 설명한다.
4.도구사용예제
• pom.xml에 <build></build>사이에 <plugins></plugins>사이에 사용을 원하는 플러그인을 추가하면 됩니다.
• 각각의 플러그인에 대한 설정법은 메이븐 공식 홈페이지 [http://maven.apache.org]를 참고하여 설정한다.
• 각 플러그인 마다 설정 방법이 다르기 때문에 여기서는 compiler플러그인에 대한 설정을 설명한다.
• <source></source>는 소스 코드의 자바 버전을 의미한다
• <target></target>은 컴파일 된 자바 클래스의 자바 버전을 의미한다.
• <encoding></encoding>은 사용하는 인코딩 언어를 의미한다
• 설정의 상세 항목은 아래와 같다.
Maven 메뉴얼
<35>
5. 참고자료
Maven 메뉴얼
<36>
문서에 사용한 참고자료
5.참고자료
• 제12회 한국자바개발자 컨퍼런스의 박재성님의 Apache Maven문서 참고
– URL : http://www.jco.or.kr/c?mc=conference&sc=pds&pdsPage=12
• 한빛미디어 : 자바세상의 빌드를 이끄는 메이븐 (저자 박재성) 참고
– POM의 구조에 대해서 3장의 pom관련 참고
감사합니다

Contenu connexe

Tendances

Vert.x 세미나 이지원_배포용
Vert.x 세미나 이지원_배포용Vert.x 세미나 이지원_배포용
Vert.x 세미나 이지원_배포용
지원 이
 
도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman
Jae Sung Park
 

Tendances (20)

지속적인 통합
지속적인 통합지속적인 통합
지속적인 통합
 
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
 
[오픈소스컨설팅]Gradle Basic - How to use Gradle in Java Project
[오픈소스컨설팅]Gradle Basic - How to use Gradle in Java Project[오픈소스컨설팅]Gradle Basic - How to use Gradle in Java Project
[오픈소스컨설팅]Gradle Basic - How to use Gradle in Java Project
 
Tomcat monitoring using_javamelody
Tomcat monitoring using_javamelodyTomcat monitoring using_javamelody
Tomcat monitoring using_javamelody
 
Vert.x 세미나 이지원_배포용
Vert.x 세미나 이지원_배포용Vert.x 세미나 이지원_배포용
Vert.x 세미나 이지원_배포용
 
okspring3x
okspring3xokspring3x
okspring3x
 
20170310 tech day-1st-maven을 이용한 프로그램 빌드-박준홍
20170310 tech day-1st-maven을 이용한 프로그램 빌드-박준홍20170310 tech day-1st-maven을 이용한 프로그램 빌드-박준홍
20170310 tech day-1st-maven을 이용한 프로그램 빌드-박준홍
 
Spring Boot + React + Gradle in VSCode
Spring Boot + React + Gradle in VSCodeSpring Boot + React + Gradle in VSCode
Spring Boot + React + Gradle in VSCode
 
Springmvc
SpringmvcSpringmvc
Springmvc
 
bamboo 로 PHP 프로젝트 지속적인 배포
bamboo 로 PHP 프로젝트 지속적인 배포bamboo 로 PHP 프로젝트 지속적인 배포
bamboo 로 PHP 프로젝트 지속적인 배포
 
[오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211
[오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211[오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211
[오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211
 
개발 방식을 바꾸는 15가지 기술
개발 방식을 바꾸는 15가지 기술개발 방식을 바꾸는 15가지 기술
개발 방식을 바꾸는 15가지 기술
 
처음 시작하는 라라벨
처음 시작하는 라라벨처음 시작하는 라라벨
처음 시작하는 라라벨
 
Learning Laravel
Learning LaravelLearning Laravel
Learning Laravel
 
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템
 
도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman
 
실무에서 라라벨 테스트를 작성하다 알게 된 것
실무에서 라라벨 테스트를 작성하다 알게 된 것실무에서 라라벨 테스트를 작성하다 알게 된 것
실무에서 라라벨 테스트를 작성하다 알게 된 것
 
Sonatype nexus 로 docker registry 관리하기
Sonatype nexus 로 docker registry 관리하기Sonatype nexus 로 docker registry 관리하기
Sonatype nexus 로 docker registry 관리하기
 
오늘 당장 시작하는 HTML5
오늘 당장 시작하는 HTML5오늘 당장 시작하는 HTML5
오늘 당장 시작하는 HTML5
 
CLT 소스품질 Jenkins 사용가이드
CLT 소스품질 Jenkins 사용가이드CLT 소스품질 Jenkins 사용가이드
CLT 소스품질 Jenkins 사용가이드
 

Similaire à Maven

JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
Ted Won
 
[231]나는서버를썰터이니너는개발만하여라 양지욱
[231]나는서버를썰터이니너는개발만하여라 양지욱[231]나는서버를썰터이니너는개발만하여라 양지욱
[231]나는서버를썰터이니너는개발만하여라 양지욱
NAVER D2
 
Python packaging
Python packagingPython packaging
Python packaging
Ji Hun Kim
 
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
복연 이
 
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
Jinuk Kim
 

Similaire à Maven (20)

Yeoman(모던웹 개발을 위한 관리도구)설치사용가이드
Yeoman(모던웹 개발을 위한 관리도구)설치사용가이드Yeoman(모던웹 개발을 위한 관리도구)설치사용가이드
Yeoman(모던웹 개발을 위한 관리도구)설치사용가이드
 
01.개발환경 교육교재
01.개발환경 교육교재01.개발환경 교육교재
01.개발환경 교육교재
 
Svn 사용하기
Svn 사용하기Svn 사용하기
Svn 사용하기
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
 
Nexus
NexusNexus
Nexus
 
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
 
Spring boot
Spring bootSpring boot
Spring boot
 
[231]나는서버를썰터이니너는개발만하여라 양지욱
[231]나는서버를썰터이니너는개발만하여라 양지욱[231]나는서버를썰터이니너는개발만하여라 양지욱
[231]나는서버를썰터이니너는개발만하여라 양지욱
 
XECon2015 :: [3-2] 오승훈 - XE3 플러그인 제작 소개
XECon2015 :: [3-2] 오승훈 - XE3 플러그인 제작 소개XECon2015 :: [3-2] 오승훈 - XE3 플러그인 제작 소개
XECon2015 :: [3-2] 오승훈 - XE3 플러그인 제작 소개
 
Python packaging
Python packagingPython packaging
Python packaging
 
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
 
RHEL8 Kernel Management Manual in Korean
RHEL8 Kernel Management Manual in KoreanRHEL8 Kernel Management Manual in Korean
RHEL8 Kernel Management Manual in Korean
 
Ubuntu에서 Flask개발 맛보기 - 1
Ubuntu에서  Flask개발 맛보기 - 1Ubuntu에서  Flask개발 맛보기 - 1
Ubuntu에서 Flask개발 맛보기 - 1
 
02.공통컴포넌트 실습교재
02.공통컴포넌트 실습교재02.공통컴포넌트 실습교재
02.공통컴포넌트 실습교재
 
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
 
Atom package part1
Atom package part1Atom package part1
Atom package part1
 
2015.07.01
2015.07.012015.07.01
2015.07.01
 
빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)
 
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
 
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
 

Maven

  • 2. Maven 메뉴얼 <1> 1. 도구 개요 2. 도구 설치 방법 3. 도구 기능 소개 4. 도구 사용 예제 5. 참고 자료 목 차
  • 3. Maven 메뉴얼 <2> 1. 도구 개요 1.1 도구 개요 1.2 메이븐 라이프 사이클 구조 1.3 저장소 구조 1.4 POM 파일 구조
  • 4. Maven 메뉴얼 <3> 1. 도구 개요 1.1 도구 개요 구분 내용 소개  메이븐은 아파치 소프트웨어 재단의 최상급 오픈 소스 프로젝트이며 원래는 자카르타 터빈(Jakarta Turbine) 프로젝트의 복잡한 빌 드 과정을 관리하기 위해 만들어졌다. 현재 버전 3까지 나오면서 메이븐은 단일 팀 프로젝트에 최적화된 빌드 도구에서 대부분의 소 프트웨어 개발 시나리오에 꼭 필요한 범용 빌드 관리 시스템까지 다양하게 사용하고 있다 라이센스  The Apache Software License, Version 2.0 사용환경  운영체제 : Platform Independent 공식 홈페이지  http://maven.apache.org 주요기능  의존성 관리  원격 레파지토리  빌드 로직에 대한 보편적인 재사용  도구 이식성과 통합  쉬운 검색과 프로젝트 산출물 필터링
  • 5. Maven 메뉴얼 <4> 1.2메이븐라이프사이클구조 메이븐이 기본적으로 제공하는 라이프사이클의 구조를 설명한다. 메이븐은 관례에 따른 방법을 강조하는 형태의 빌드툴이라 라이프 사이클의 기본적인 구조는 대부분의 메이븐 프로젝트가 동일하다. 1.도구개요
  • 6. Maven 메뉴얼 <5> 1.3저장소구조 메이븐의 저장소 구조를 확인한다. 1.도구개요
  • 7. Maven 메뉴얼 <6> 1.4POM파일구조[1/3] POM은 프로젝트의 구조와 내용을 설명하고 있으며 pom.xml 파일에 프로젝트 관리 및 빌드에 필요한 환경 설정, 의존성 관리 등의 정보 들을 기술한다. 프로젝트의 세부 메타 데이터 정보를 포함한다. 1.도구개요 • Project Information : 프로젝트 이름, 프로젝트 URL, 프로젝트에 참여하는 개발자 목록, 프로젝트의 라이선스 같은 기본적인 정보를 관리한다. • Build Settings : 메이븐 빌드와 관련한 기본적인 빌드 설정을 변경하기 위한 카테고리이다. • POM Relationships : 대부분의 프로젝트는 다른 라이브러리 또는 프로젝트와 의존 관계를 가지며, 각 프로젝트 사이에서 상속 관계 를 가지는 경우도 있다. 이런 경우 각 프로젝트의 관계를 관리하는 부분이다. • Build Environment : 모든 프로젝트는 다양한 환경에 배포하는 것이 가능해야 한다. 환경에 따라 변경되는 부분이 발생하는데, 이와 같이 다양한 환경에 따라 다른 설정 정보를 관리하는 것이 이 카테고리이다.
  • 8. Maven 메뉴얼 <7> 1.4POM파일구조[2/3] pom.xml 설정파일의 주요 엘리먼트를 설명한다. 프로젝트의 세부 메타 데이터 정보를 포함한다. 1.도구개요 • project : pom.xml 파일의 최상위 엘리먼트 • modelVersion : POM 모델의 버전. 가장 최근 버전이 4.0.0이다. POM 모델이 변경되지 않으면 수정할 필요가 없다. • groupId : 프로젝트를 생성하는 조직의 고유 아이디를 결정한다. 일반적으로 도메인 이름을 사용한다. • artifactId : 프로젝트를 식별하는 유일한 아이디를 의미한다. 예를 들어 net.pinsit라는 groupId를 사용하고 있는 조직에 여러 개의 프 로젝트가 있을 수 있다. • packaging : 프로젝트를 어떤 형태로 패키징할지 결정한다. jar, war, ear, pom 등이 해당된다. • version : 프로젝트의 현재 버전이다. 개발이 완료된 버전일 경우 1.0, 2.0과 같이 사용하겠지만, 프로젝트 개발 중에는 SNAPSHOT 을 접미사로 사용할 수 있다. SNAPSHOT은 메이븐의 예약어이며, SNAPSHOT을 사용하면 라이브러리를 다른 방식으로 관리한다. • name : 프로젝트 이름 • url : 프로젝트 사이트가 있으면 사이트 URL을 등록한다. • dependencies : <dependencies/>엘리먼트와 하위 엘리먼트인 <dependency/>는 프로젝트와 의존 관계에 있는 라이브러리를 관리 한다.
  • 9. Maven 메뉴얼 <8> 1.4POM파일구조[3/3] POM파일의 전체적인 구조는 분량이 많은 관계로 실제 내용은 POM의 스키마를 참조하기 바란다. 현재 사용되는 POM 4.0의 스키마는 http://maven.apache.org/maven-v4_0_0.xsd를 참조하기 바란다. 스키마를 보면 전체적인 구조를 이해할 수 있다. 1.도구개요
  • 10. Maven 메뉴얼 <9> 2. 도구 설치 방법 2.1 도구 다운로드 2.2 도구 설치 2.3 도구 설치 확인
  • 11. Maven 메뉴얼 <10> 2.1도구다운로드[1/4] 메이븐 공식 홈페이지 [http://maven.apache.org] 에서 OS에 맞는 설치파일을 다운로드 받습니다. 브라우저 주소 창에 주소를 입력하고 메이븐 홈페이지로 이동한 후 다운로드를 위해서 다운로드 페이지로 이동한다 2.도구설치방법 1
  • 12. Maven 메뉴얼 <11> 2.1도구다운로드[2/4] 다운로드를 원하는 버전을 클릭합니다. 2.도구설치방법 2
  • 13. Maven 메뉴얼 <12> 2.1도구다운로드[3/4] 원하는 Mirror 사이트를 선택해서 내 컴퓨터에 다운로드를 받습니다. 2.도구설치방법 3
  • 14. Maven 메뉴얼 <13> 2.1도구다운로드[4/4] 내 컴퓨터의 다운로드 폴더에 다운받은 파일을 확인합니다. 2.도구설치방법
  • 15. Maven 메뉴얼 <14> 2.2도구설치[1/6] 다운로드 받은 설치 파일을 원하는 폴더에 압축을 풉니다. 이 문서에서는 C드라이브 루트폴더에 설치를 합니다. 압축받은 파일을 C드라이브 루트로 이동하여 압축을 해제합니다 2.도구설치방법
  • 16. Maven 메뉴얼 <15> 2.2도구설치[2/6] 커맨드라인에서 실행다운로드 받은 설치 파일을 원하는 폴더에 압축을 풉니다. 이 문서에서는 C드라이브 루트폴더에 설치를 합니다. 제어판이나 내 컴퓨터의 속성을 선택한 후 아래 화면에서 고급 시스템 설정을 클릭한다 2.도구설치방법
  • 17. Maven 메뉴얼 <16> 2.2도구설치[3/6] 시스템 속성의 고급 탭을 클릭하고 아래에 있는 환경 변수를 클릭한다. 2.도구설치방법
  • 18. Maven 메뉴얼 <17> 2.2도구설치[4/6] 시스템 변수의 새로 만들기를 선택하고 환경 변수를 추가한다. 2.도구설치방법
  • 19. Maven 메뉴얼 <18> 2.2도구설치[5/6] 아래 내용처럼 M2_HOME과 설치한 폴더를 입력하고 확인을 클릭하여 추가한다. 2.도구설치방법
  • 20. Maven 메뉴얼 <19> 2.2도구설치[6/6] 다음에 Path의 편집을 클릭하고 변수값에 아래 [%M2_HOME%/bin;]을 추가하고 확인을 클릭하여 추가한다. 2.도구설치방법
  • 21. Maven 메뉴얼 <20> 2.3도구설치확인 커맨드라인에서 메이븐 명령을 수행하여 설치를 확인한다 커맨드라인에 [mvn –version] 명령을 수행하여 아래와 같이 나오면 정상적으로 설치가 완료된다. 2.도구설치방법
  • 22. Maven 메뉴얼 <21> 3. 도구 기능 소개 3.1 아키타입 생성 3.2 이클립스용 프로젝트로 변환 3.3 아키타입 테스트 3.4 패키지 생성
  • 23. Maven 메뉴얼 <22> 3.1아키타입생성[1/2] 메이븐의 아키타입은 프로젝트의 기본 구조를 생성해주는 기능이다. 아키타입을 생성하는 명령을 입력하여 아키타입을 생성한다. • 커맨드 명령 : mvn archetype:generate –DarchetypeCatalog=internal • 커맨드 라인에서 입력하면 메이븐의 내부 카테고리의 아키타입을 출력한다(아래 화면 참고). • 원하는 아키타입을 선택하여 프로젝트를 생성한다 • 이 문서에서는 maven-archetype-webapp 프로젝트를 생성한다 3.도구기능소개
  • 24. Maven 메뉴얼 <23> 3.1아키타입생성[2/2] maven-archetype-webapp인 19번을 선택하여 아래 항목을 입력하여 아키타입을 생성한다. • groupId : net.pinsit • artifactId : test • version : 기본값 • package : 기본값 • Y : Y • 아래 처럼 프로젝트가 생성되었습니다 3.도구기능소개
  • 25. Maven 메뉴얼 <24> 3.2이클립스용프로젝트로변환[1/5] 생성한 아키타입 프로젝트를 이클립스용 프로젝트로 변환한다. 메이븐으로 생성한 프로젝트를 이클립스에서 사용하기 위해 설정을 추가한다 • 커맨드 명령 : mvn eclipse:clean eclipse:eclipse • 앞의 eclipse:clean 명령은 이클립스용으로 만들어지는 파일을 삭제하는 명령이다 • 만약에 이클립스용 WTP(Web Tools Platform)프로젝트의 생성을 위해서는 아래와 같은 플러그인을 추가한다 3.도구기능소개
  • 26. Maven 메뉴얼 <25> 3.2이클립스용프로젝트로변환[2/5] 생성한 이클립스 프로젝트를 이클립스에서 import한다. 이클립스의 File메뉴의 Import를 선택하여 Import창을 연다 3.도구기능소개 1 2
  • 27. Maven 메뉴얼 <26> 3.2이클립스용프로젝트로변환[3/5] General의 존재하는 프로젝트를 가져오는 항목을 선택하고 다음으로 넘어간다. 3.도구기능소개 3 4
  • 28. Maven 메뉴얼 <27> 3.2이클립스용프로젝트로변환[4/5] 생성된 프로젝트를 선택하여 Finish를 선택하여 다음으로 넘어간다. 3.도구기능소개 5 6
  • 30. Maven 메뉴얼 <29> 3.3아키타입테스트 아키타입으로 생성한 프로젝트의 테스트는 커맨드 라인에서 입력하여 테스트를 수행한다. 3.도구기능소개 • 커맨드 명령 : mvn test • 아래 화면 처럼 테스트 수행한 내용을 보여준다
  • 31. Maven 메뉴얼 <30> 3.4패키지생성 아키타입으로 생성한 프로젝트를 패키징한다 pom.xml에 설정된 패키징의 타입으로 패키지가 된다 3.도구기능소개 • 커맨드 명령 : mvn package • 아래 화면 처럼 패키징하여 war파일이 생성된다
  • 32. Maven 메뉴얼 <31> 4. 도구 사용 예제 4.1 프로퍼티 추가 4.2 라이브러리 추가 4.3 플러그인 추가
  • 33. Maven 메뉴얼 <32> 4.1프로퍼티추가 pom.xml에서 사용하는 프로퍼티의 내용을 추가한다. 기존에 생성된 프로퍼티의 항목을 설명하는 것으로 프로퍼티를 설명한다 4.도구사용예제 • pom.xml에 <properties></properties>를 추가하고 사용할 프로퍼티를 추가한다. • 사용할 프로퍼티명을 <>태그 사이에 입력하고 시작/종료태그 사이에 value를 입력한다. • pins-core에서 사용한 프로퍼티를 설명한다. – <java.version>1.6</java.version> : 자바 버전을 1.6으로 설정 – <project.build.sourceEncoding>UTF-8<project.build.sourceEncoding> : pom프로젝트의 Build부분의 인코딩을 UTF-8로 설정 – <spring.version>3.0.5.RELEASE</spring.version> : 스프링의 공통 버전을 3.0.5.RELEASE로 사용하기 위해 추가 – <slf4j.version>1.6.2</slf4j.version> : slf4j의 버전을 1.6.2로 사용하기 위해 추가 – <aspectj.version>1.6.11</aspectj.version> : aspectJ의 버전을 1.6.11로 사용하기 위해 추가
  • 34. Maven 메뉴얼 <33> 4.2라이브러리추가 pom.xml에서 사용할 라이브러리를 추가한다. 프로젝트에서 사용할 라이브러리를 추가하는 것으로 여기서는 스프링 프레임워크를 추가한 부분만 설명한다. 4.도구사용예제 • pom.xml에 <dependencies></dependencies>사이에 사용을 원하는 라이브러리를 추가하면 됩니다. • 라이브러리에 검색은 maven의 라이브러리 검색엔진들을 참고하시기 바랍니다 [http://mvnrepository.com] • 라이브러리는 <dependency>라는 태그안에 groupId, artifactId, version을 명시하여 추가합니다 • 사용 예제는 아래와 같이 하여 라이브러리를 추가할 수 있습니다
  • 35. Maven 메뉴얼 <34> 4.3플러그인추가 pom.xml에서 사용할 플러그인을 추가한다. 프로젝트에서 사용할 플로그인을 사용하는 부분으로 여기서는 컴파일러의 버전과 인코딩 설정을 설명한다. 4.도구사용예제 • pom.xml에 <build></build>사이에 <plugins></plugins>사이에 사용을 원하는 플러그인을 추가하면 됩니다. • 각각의 플러그인에 대한 설정법은 메이븐 공식 홈페이지 [http://maven.apache.org]를 참고하여 설정한다. • 각 플러그인 마다 설정 방법이 다르기 때문에 여기서는 compiler플러그인에 대한 설정을 설명한다. • <source></source>는 소스 코드의 자바 버전을 의미한다 • <target></target>은 컴파일 된 자바 클래스의 자바 버전을 의미한다. • <encoding></encoding>은 사용하는 인코딩 언어를 의미한다 • 설정의 상세 항목은 아래와 같다.
  • 37. Maven 메뉴얼 <36> 문서에 사용한 참고자료 5.참고자료 • 제12회 한국자바개발자 컨퍼런스의 박재성님의 Apache Maven문서 참고 – URL : http://www.jco.or.kr/c?mc=conference&sc=pds&pdsPage=12 • 한빛미디어 : 자바세상의 빌드를 이끄는 메이븐 (저자 박재성) 참고 – POM의 구조에 대해서 3장의 pom관련 참고