Software Requirements Specification Template

Similar documents
Software Requirements Specification Template

Software Requirements Specification Template

Software Requirements Specification Template

Software Requirements Specification Template

문서의 제목 나눔고딕B, 54pt

슬라이드 1

Social Media and Social Computing

PowerPoint 프레젠테이션

[ 스프링부트, 그래들, HelloWorld]STS,Gradle 설치및 WEB MVC 심플예제 간단히 STS 및 Gradle Support Plugin 을설치하여간단히 Spring Boot, Gradle Web 응용프로그램을작성해보자. 0. STS 및 Gradle Su

슬라이드 1

표준프레임워크 Nexus 및 CI 환경구축가이드 Version 3.8 Page 1

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

파워포인트

표준프레임워크로 구성된 컨텐츠를 솔루션에 적용하는 것에 문제가 없는지 확인

Apache Ivy

슬라이드 1

Spring Boot

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

을풀면된다. 2. JDK 설치 JDK 는 Sun Developer Network 의 Java( 혹은 에서 Download > JavaSE 에서 JDK 6 Update xx 를선택하면설치파일을

슬라이드 1

쉽게 풀어쓴 C 프로그래밍

개발환경 교육교재

Install stm32cubemx and st-link utility

PowerPoint Presentation

Spring

리눅스설치가이드 3. 3Rabbitz Book 을리눅스에서설치하기위한절차는다음과같습니다. 설치에대한예시는우분투서버 기준으로진행됩니다. 1. Java Development Kit (JDK) 또는 Java Runtime Environment (JRE) 를설치합니다. 2.

Microsoft PowerPoint - aj-lecture1.ppt [호환 모드]

슬라이드 1

Microsoft Word - 3부A windows 환경 IVF + visual studio.doc

JDK이클립스

슬라이드 1

(Microsoft PowerPoint - AndroG3\306\367\306\303\(ICB\).pptx)

Mango-IMX6Q mfgtool을 이용한 이미지 Write하기

Intellij spring(mvc) + maven 환경구축 New Project에서좌측 template 유형에서 Maven을선택합니다. 오른쪽상단에 Project SDK는 java SDK가설치된폴더를선택하면됩니다. 오른쪽에 Create from archetyhpe을체

내장서버로사용. spring-boot-starter-data-jpa : Spring Data JPA 사용을위한설정 spring-boot-devtools : 개발자도구를제공, 이도구는응용프로그램개발모드에서유 용한데코드가변경된경우서버를자동으로다시시작하는일들을한다. spri

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.

슬라이드 1

2. 기능요약 자바프로그래밍언어에서사용하는자동화된소프트웨어빌드도구 주요기능 IDE 통합및도구지원 원격코드 Build 자동화 지원여부 대부분의도구지원 (Eclipse, NetBeans 등 ) 지원 (FTP, SCP, SFTP, SVN) 자동화 Build 중 Unit Te

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

문서의 제목 나눔고딕B, 54pt

SIGIL 완벽입문

ISP and CodeVisionAVR C Compiler.hwp

메일서버등록제(SPF) 인증기능적용안내서 (HP-UX - qmail) OS Mail Server SPF 적용모듈 (Perl 기반) 작성기준 HP-UX 11.11i qmail 1.03 spf-filter 년 6 월

서현수

메일서버등록제(SPF) 인증기능적용안내서 (HP-UX - postfix) OS Mail Server SPF 적용모듈 (Perl 기반) 작성기준 HP-UX 11.11i postfix spf-filter 년 6 월

슬라이드 1


Windows 10 General Announcement v1.0-KO

PowerPoint 프레젠테이션

문서의 제목 나눔명조R, 40pt

1. 안드로이드개발환경설정 안드로이드개발을위해선툴체인을비롯한다양한소프트웨어패키지가필요합니다 툴체인 (Cross-Compiler) 설치 안드로이드 2.2 프로요부터는소스에기본툴체인이 prebuilt 라는이름으로포함되어있지만, 리눅스 나부트로더 (U-boot)

Syslog 서버개발예제 1. New project new.bat 파일을 d:\kraken\examples 에복사하고명령프롬프트에서다음과같이실행 new [artifact id] [package]..or.. mvn archetype:generate -DarchetypeG

01....b

2007백서-001-특집

¾Ë·¹¸£±âÁöħ¼�1-ÃÖÁ¾

00목차

(291)본문7

메일서버등록제(SPF) 인증기능적용안내서 (AIX - sendmail) OS Mail Server SPF 적용모듈 (Perl 기반) 작성기준 AIX 5.3 sendmail spf-filter 년 6 월

Microsoft PowerPoint - chap01-C언어개요.pptx

tut_modelsim(student).hwp

임베디드시스템설계강의자료 4 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

지난시간에... 우리는 kernel compile을위하여 cross compile 환경을구축했음. UBUNTU 12.04에서 arm-2009q3를사용하여 간단한 c source를빌드함. 한번은 intel CPU를위한 gcc로, 한번은 ARM CPU를위한 gcc로. AR

XSS Attack - Real-World XSS Attacks, Chaining XSS and Other Attacks, Payloads for XSS Attacks

문서의 제목 나눔고딕B, 54pt

consulting

Microsoft Word - CAE 클러스터 환경 구축-ABAQUS.doc

歯MW-1000AP_Manual_Kor_HJS.PDF

Secure Programming Lecture1 : Introduction

화판_미용성형시술 정보집.0305

4. Compass 명령어를알아보자. compass <command> [<option>, <option>, <option>.. <option>] command : 명령어. clean - Remove generated files and the sass cache. com

Microsoft PowerPoint - MonthlyInsighT-2018_9월%20v1[1]

이 드리는 혜택 완벽 을 위한 발환경 : Team Foundation Server 200 & CAL 제공 최저의 비용으로 구현을 위해 Visual Studio Team Foundation Server 200 서버 라이센스와 CAL이 에 포함되어 있습니다 을 모든 팀원이

Angry MOMO Presentation

Contributors: Myung Su Seok and SeokJae Yoo Last Update: 09/25/ Introduction 2015년 8월현재전자기학분야에서가장많이쓰이고있는 simulation software는다음과같은알고리즘을사용하고있다.

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

슬라이드 1

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]

2. 기능요약 Parallel 빌드지원등빌드자동화기능을지원하며다양한도구 ( 형상관리도구, Issue Tracker, Test 도구, IDE) 와의연동을지원함. 주요기능 Parallel 빌드지원 ( 다수프로젝트동시빌드 ) 분산빌드웹기반관리 알림형상관리도구지원

Discrete Mathematics

작성자 : 기술지원부 김 삼 수

메일서버등록제(SPF) 인증기능적용안내서 (Exchange Windows 2000) OS Mail Server SPF 적용모듈 작성기준 Windows Server 2000 Exchange Server 2003 GFI MailEssentials 14 for

Microsoft Word - Armjtag_문서1.doc

JVM 메모리구조

vRealize Automation용 VMware Remote Console - VMware

임베디드디바이스개발시커널로리눅스를많이사용하는데, 그때그커널과함께리눅스명령어도필요하게된다. 모든명령어를지원하기위해서는다수의개별적인패키지들이필요하다. 한프로젝트에서그많은명령어를한번에지원해준다면자원제약적인임베디드환경에서공간효율성이극대화될것이다. 상대적으로경량화된리눅스명령어세

< 목차 > Ⅰ. 개요 3 Ⅱ. 실시간스팸차단리스트 (RBL) ( 간편설정 ) 4 1. 메일서버 (Exchange Server 2007) 설정변경 4 2. 스팸차단테스트 10

소프트웨어 검증 및 설계

텀블러514

JAVA 플랫폼 개발 환경 구축 및 활용

<4D F736F F F696E74202D20C1A632C0E520C7C1B7CEB1D7B7A5B0B3B9DFB0FAC1A4>

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins

품질검증분야공개 SW 솔루션목록 ( ) 순번분류솔루션명라이선스기술지원홈페이지제품개요 1 BTS Bugzilla MPL community 웹기반의 bug tracking 및테스트도구 2 BTS Fossil 2-c

PowerPoint Presentation

목차 I. CI 정의 II. CI 필요성 III. CI 기능및특징 IV. CI 제품 V. Hudson VI. 적용방안 VII. 결론 - 1 -

게시판 스팸 실시간 차단 시스템

PowerPoint 프레젠테이션

4S 1차년도 평가 발표자료

View Licenses and Services (customer)

Transcription:

Maven Chapter2 Page 1 Table of Contents Table of Contents... 1 Revision History... 2 1. 내가꿈꾸는개발환경... 3 2. 메이븐설치및템플릿프로젝트생성... 3 2.1 메이븐설치... 4 2.2 메이븐기반의템플릿프로젝트생성... 5 2.3 메이븐기본명령어... 8 2.4 위키북템플릿프로젝트생성...10 3. 메이븐개요및설정파일... 14 4. 메이븐라이프사이클 lifecycle... 14 5. 메이븐을이용한의존라이브러리관리... 14 6. 메이븐과이클립스통합... 14 7. 메이븐과데이터베이스통합... 14 8. 메이븐프로파일, 배포... 14 9. 리포팅기능을활용한문서관리... 14 10. 메이븐모듈 module... 14 11. 메이븐사내저장소설치및활용... 14 12. 표준 POM 파일생성및리팩토링... 15 13. 메이븐아키타입 archetype... 15 14. 새로운프로젝트를시작하면서..... 15

Maven Chapter2 Page 2 Revision History Name Date Reason For Changes Version

Maven Chapter2 Page 3 1. 내가꿈꾸는개발환경 2. 메이븐설치및템플릿프로젝트생성 프로젝트시작 1 일째 1 내일부터위키북 2 프로젝트를시작한다는설레임과걱정때문에밤잠을이루지못하고있다. 위키북프로젝트는아무것도없는상태에서진행해야하는상황이기때문에프로젝트초반에방향을어떻게결정하느냐가특히중요하다. 이번위키북프로젝트에서는그동안유용하게사용했던앤트빌드툴을버리고메이븐이라는새로운빌드툴을적용해볼작정이다. 아직까지메이븐을사용한경험이없기때문에다른프로젝트에서사용하고있는메이븐빌드스크립트를무작정도입하기보다는아무것도없는상태에서단계적으로메이븐빌드스크립트를발전시켜나가기로결정했다. 오픈소스프로젝트중에서메이븐을사용하고있는프로젝트가많다. 따라서이프로젝트중괜찮다고생각하는메이븐빌드스크립트하나를선정해활용하는것도좋은전략이다. 하지만메이븐에대한이해도가없는상태에서이같은전략을취할경우빌드스크립트에문제가발생할경우해결책을찾기쉽지않겠다는생각이들었다. 오히려처음부터빌드스크립트를만들어가면서메이븐빌드스크립트에대한이해도를높인다음, 일정수준에도달하면잘만들어진빌드스크립트를참조할계획이다. 그나저나빨리잠을자야내일지각하지않을텐데걱정이다. 프로젝트개발리더가프로젝트첫날부터 지각하는모습을보일수는없지않은가? 내일걱정은내일하자. 라는마음으로잠자리에든다. 당일다행히지각은하지않았다. 프로젝트에서같이일하게될기획자 ( 재영, 별명은쨍 ), 개발자 ( 희송, 인태, 용석, 응주 ) 와인사를나누고위키북프로젝트에대한논의를시작하였다. 개발환경은위키북프로젝트에 1 프로젝트를시작하는첫째날부터개발환경을설정하지는않는다. 이책은메이븐을프로젝트에적용하는 과정을보여주기위하여프로젝트시작첫째날부터메이븐에대한준비작업을하는것으로글을시작했다. 2 내가 2007 년 11 월부터진행했던프로젝트이름이다. 위키기능에책이라는메타포를도입해진행했던 프로젝트로별도의서비스로발전하지는못했다. 이프로젝트는최종적으로 2009 년 12 월네이버카페 서비스에서카페북이라는이름으로빛을보게되었다.

Maven Chapter2 Page 4 대한분석과설계를하면서시간나는틈틈이진행하기로했다. 다른개발환경은익숙한상태이니오늘은 잠시짬을내어메이븐에대하여간단히살펴보는것이좋겠다는생각이들었다. 개발자들에게이번프로젝트는 메이븐기반으로진행하겠습니다. 라고큰소리를쳤는데메이븐사이트 3 를봐도어디서부터시작해야할지모르겠다. 그래도메이븐을사용하려면일단설치는하자. 근데설치가끝나면무엇부터할까? 그래도메이븐이빌드툴인데메이븐기반으로프로젝트를만들고빌드부터한번해보자. 그이후에메이븐구조에대해서파악하는것이좋겠다. 2.1 메이븐설치 메이븐은이책을쓰고있는시점의최신버전인 2.2.x 버전을활용한다. 메이븐 2.2.x 버전을설치하고실행하기위해서는먼저 JDK 1.4 이상의버전이설치되어있어야한다. 메이븐을설치하려는개발자는자바언어를사용하는개발자라는가정하에서 JDK 가설치되어있을것으로생각한다. 따라서이책에서는 JDK 설치과정은생략한다. 메이븐을설치하는과정은다음과같다. http://maven.apache.org/download.html 에서메이븐최신버전을다운받는다. 이책을쓰는시점의최신버전은메이븐 2.2.1 이다. 이책에서는 2.2.1 버전으로진행하겠다. 다운받은 apache-maven-2.2.1-bin.zip 파일의압축을푼다음시스템환경변수에 MAVEN_HOME 을추가한다. 시스템환경변수 PATH 에 MAVEN_HOME/bin 을추가한다. 명령프롬프트에서 "mvn version" 또는 mvn --v 를실행해메이븐버전이 2.2.1 로나타나면정상적으로설치가완료된것이다.( 그림 2-1 참조 ) 3 http://maven.apache.org

Maven Chapter2 Page 5 그림 2-1 윈도우즈 OS 에서설치한메이븐의버전을확인하는화면 메이븐설치과정은윈도우즈, 리눅스, 맥 OS X 모두동일하다. 다른점이라면환경변수에 MAVEN_HOME, PATH 를설정하는부분이다. 각 OS 마다메이븐에대한 MAVEN_HOME, PATH 를설정하는방법은 생략한다. 4 2.2 메이븐기반의템플릿프로젝트생성 메이븐설치를완료했으니메이븐기반의프로젝트를만든후에빌드를해봐야겠다. 그런데메이븐은앤트와달리기본적으로정해져있는소스디렉토리구조가있다고들었는데처음부터하나씩만들어야되는거야? 메이븐기본설정파일의이름도모르는상태인데막막할따름이다. 많은오픈소스프레임워크가처음시작하는개발자를위해 Getting Started 문서를제공하고있는데메이븐도있지않을까? 메이븐사이트에서찾아보니예상한데로두가지버전의 Getting Started 문서를제공하고있다. * Getting Started in 5 Minutes (http://maven.apache.org/guides/getting-started/maven-in-fiveminutes.html), * Getting Started in 30 Minutes (http://maven.apache.org/guides/getting-started/index.html ) 오늘은메이븐맛보기만하기로했으니 30 분은너무많이걸리고 5 분짜리문서로시작해봐야겠다. 이 Getting Started 문서를살펴보니메이븐아키타입 Archetype 이라는기능을활용해서메이븐기반의템플릿 4 이책은윈도우즈 OS 를기반으로진행한다. 메이븐또한자바기반으로동작하는빌드툴이기때문에 모든 OS 에서똑같은방식으로사용가능하다.

Maven Chapter2 Page 6 프로젝트를생성할수있겠다. 이문서를참고하여메이븐기반으로일반애플리케이션 (jar 프로젝트 ) 으로 생성해봐야겠다. 메이븐은생성하는프로젝트의종류에따라기반이되는템플릿프로젝트를제공한다. 메이븐에서제공하는템플릿프로젝트를이용하여메이븐기반프로젝트를생성할수있다. 메이븐은프로젝트의소스디렉토리, 테스트디렉토리, 웹리소스디렉토리등의기본설정이예약되어있으므로정해진규칙에따라프로젝트의뼈대를만들어야한다. 메이븐의템플릿프로젝트로프로젝트를생성하면프로젝트의뼈대를자동으로생성할수있다. 메이븐의이같은기능을아키타입 archetype 이라고한다. 아키타입에대한더자세한내용은 13 장에서다루고있다. 메이븐에서제공하는아키타입은메이븐중앙저장소에서관리한다. 명령프롬프트에서다음과같이 실행하면 jar 기반의메이븐프로젝트가생성된다. mvn archetype:generate -DgroupId=net.javajigi -DartifactId=myfirst -DarchetypeArtifactId=mavenarchetype-quickstart -DinteractiveMode=false 예제 2-1 메이븐아키타입을이용하여 jar 프로젝트를생성하기위한명령어 명령프롬프트에서예제 2-1 을실행하면명령프롬프트를실행한디렉토리아래에 myfirst 라는이름으로 프로젝트가자동생성된다. 위명령어로프로젝트를생성하면그림 2-2 와같은디렉토리구조가생성된다. 그림 2-2 메이븐아키타입으로자동생성된 myfirst 기본디렉토리구조 메이븐빌드툴은소스코드와테스트소스코드를분리해서관리한다. 메이븐의기본소스디렉토리는 src/main/java 이고, 기본테스트소스디렉토리는 src/test/java 이다. 각각의소스디렉토리밑에는예제 2-1 에서사용한 groupid 가기본패키지로생성된다.

Maven Chapter2 Page 7 예제 2-1 에서 groupid 와 artifactid 는프로젝트를생성하는개발자가임의로변경해도된다. groupid 와 artifactid 는메이븐빌드툴에서프로젝트를구별하는용도로사용하는고유값이다. groupid 는일반적으로생성하는프로젝트의도메인명을사용하며, artifactid 는프로젝트이름을사용한다. 예제 2-1 과같이메이븐아키타입으로프로젝트를생성하면 artifactid 값을프로젝트가생성된다. groupid 와 artifactid 에대한더자세한내용은 3 장에서다루고있다. < 참고사항 > 메이븐을이해하려면메이븐의저장소에대하여이해해야한다. 메이븐은자바진영의오픈소스라이브러리, 메이븐플러그인, 메이븐아키타입등메이븐기반으로빌드할때필요한모든자원을중앙저장소에서관리한다. 이자원은메이븐기반의프로젝트를빌드하는시점에개발자 PC 에자동으로다운로드한다. 메이븐 2.0 의중앙저장소는 http://repo1.maven.org/maven2/ 이다. 메이븐저장소에대한더자세한내용은 5 장에서다루고있다. </ 참고사항 > 예제 2-1 을실행하면메이븐기반의프로젝트뼈대를생성하면서동시에메이븐빌드툴의기본설정 파일인 pom.xml 파일도 myfirst 디렉토리아래생성된다. 생성된 pom.xml 은다음과같다. <project xmlns="http://maven.apache.org/pom/4.0.0" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelversion>4.0.0</modelversion> <groupid>net.javajigi</groupid> <artifactid>myfirst</artifactid> <packaging>jar</packaging> <version>1.0-snapshot</version> <name>myfirst</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupid>junit</groupid> <artifactid>junit</artifactid> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project> 예제 2-2 생성된 myfirst 프로젝트의 pom.xml 파일 예제 2-2 를보면예제 2-1 에서템플릿프로젝트를생성할때사용한 groupid 와 artifactid 를그대로사용하는것을알수있다. <packaging/> 엘리먼트를보면생성한메이븐프로젝트가 jar 기반의자바프로젝트라는것을알수있다. 이장에서는메이븐의기본설정파일이 pom.xml 파일이라는것만알아두자. pom.xml 설정파일에대한기본적인내용은 3 장에서다루고있다.

Maven Chapter2 Page 8 2.3 메이븐기본명령어 메이븐을실행하기위한기본명령은 MAVEN_HOME/bin 디렉토리에있는 mvn.bat( 윈도우즈기준, 리눅스나맥은 mvn) 을활용한다. 메이븐명령은다음과같은형태로실행가능하다. mvn [options] [<goal(s)>] [<phase(s)>] 메이븐명령은옵션 option, 골 goal, 페이즈 phase 조합으로실행하는것이가능하다. 옵션은메이븐기본설정파일 (pom.xml) 이존재하지않는곳에서도실행하는것이가능하며, 골과페이즈는메이븐기반으로진행하는프로젝트의디렉토리에서실행할수있다. 메이븐명령에서사용할수있는옵션은 mvn help 를실행하여확인할수있다. 앞에서메이븐버전을확인하기위하여사용한 mvn version 또한옵션중의하나이다. 메이븐에서대표적으로가장많이사용하는옵션중의하나가메이븐설정파일에인자를전달하는 D 옵션이다. 메이븐은기본적으로빌드를실행할때단위테스트를진행한다. 만약단위테스트를실행하지않으려면 mvn Dmaven.test.skip=true [<phase(s)>] 와같이실행할수있다. 메이븐명령을실행하는옵션에대해서는프로젝트를진행하면서옵션을사용할필요가있는시점에추가적으로설명하도록하겠다. 메이븐은빌드를실행하기위하여페이즈와골개념을가진다. 메이븐은페이즈와골을이용하여빌드를 실행할수있으며, 빌드를실행할때여러개의페이즈와골을실행하는것이가능하다. 예를들어다음과같이 다양한형태로빌드하는것이가능하다. mvn clean test: clean 과 test 라는페이즈를실행한다. mvn clean compiler:compile: clean 페이즈를실행하고, compiler 플러그인의 compile 골을실행한다. mvn Dmaven.test.skip=true test: 옵션으로단위테스트를실행하지않도록인자를전달하면서 test 페이즈를실행한다. 위예와같이메이븐명령을실행할때옵션, 페이즈, 골을조합해서사용하는것이가능하다. 페이즈와골에 대한자세한내용은 4 장에서다루고있다. 따라서이장에서는위와같이다양한방식으로메이븐을실행하는 것이가능하다는정도로이해하면된다. 메이븐기본명령어도익혔으니앞에서생성한 myfirst 프로젝트를메이븐빌드툴로빌드를해보자. 먼저 생성한 myfirst 디렉토리로이동한다음 mvn test 를실행해서빌드가성공하면템플릿프로젝트가 정상적으로생성된것이다.

Maven Chapter2 Page 9 그림 2-3 myfirst 프로젝트를메이븐을이용하여빌드하는화면 mvn test 명령을실행한결과그림 2-3 과같이여러단계를거치면서빌드가성공한다. resources:resources 단계에서는무슨일을하는지알수없지만, compiler:compile 과 compiler:testcompile 단계에서소스코드에대한컴파일작업을하고있다는것을대략적으로알수있다. 컴파일단계가두단계로나뉘어지는것은 compiler:compile 단계에서는 src/main/java 디렉토리의소스코드를컴파일하고, compiler:testcompile 단계에서는 src/test/java 디렉토리의테스트소스코드를컴파일한다. 마지막단계인 surefire:test 단계에서단위테스트를실행한다.

Maven Chapter2 Page 10 빌드명령은 mvn test 를실행했지만단위테스트를하기위하여필요한작업을먼저실행하고최종적으로 단위테스트를진행하는과정을확인할수있다. 그림 2-3 의전체적인과정에대한더자세한내용은 4 장에서다루고있다. 2.4 위키북템플릿프로젝트생성 오늘목표는완료했지만궁금한점이하나있다. 설마메이븐에서제공하는아키타입이한가지만존재하는것은아니겠지? 예제 2-1 을보면 archetypeartifactid 인자를이용하여아키타입아이디를전달하는것을보니여러개의아키타입을제공하고있는것이분명하다. 오늘목표는완료했지만내가정말만들고싶었던프로젝트는일반애플리케이션 (jar) 이아니라웹애플리케이션 (war) 이다. 궁금증을해결하기위해구글검색엔진에서 maven archetype list 로검색해보니메이븐에서제공하는아키타입목록 5 을찾을수있다. 많아봤자 10 개정도의아키타입을제공할줄알았는데총 58 개의아키타입을제공하고있다. 예제 2-1 과같이 archetypeartifactid 를지정할수도있지만 mvn archetype:generate 만실행해서생성하는것도가능하다. 위키북프로젝트를위한웹애플리케이션프로젝트는이방식으로생성해봐야겠다. 명령프롬프트에서 mvn archetype:generate -DarchetypeCatalog=internal 를실행한다. < 참고사항 > 메이븐은아키타입의종류에따라카탈로그를나누어관리가가능하도록지원하고있다. 메이븐에서사용할 수있는카탈로그는다음과같다. internal: http://docs.codehaus.org/display/mavenuser/archetypes+list 에서관리하는 58 개의 아키타입목록. local: 본인이만든아키타입을관리하기위한카탈로그. 5 http://docs.codehaus.org/display/mavenuser/archetypes+list. 이목록은시간이지나면서계속해서 변화발전한다.

Maven Chapter2 Page 11 remote: 외부사이트에서제공하는아키타입목록. remote 카탈로그의아키타입은다양한오픈 소스프레임워크진영에서만들고있기때문에 remote 카탈로그에서제공하는아키타입은이책을 쓰고있는시점에 286 번이다. 책을처음쓸때는 archetype 플러그인의기본카탈로그 Catalog 값이 internal, local 이었다. 그런데책을쓰는중반쯤플러그인의버전이업데이트되면서기본값이 remote, local 로변경되었다. 이책에서는템플릿프로젝트를생성하기위하여 internal 카탈로그를사용한다. 카탈로그에대한자세한내용은 http://maven.apache.org/archetype/maven-archetype-plugin/examples/generate-alternative-catalog.html 문서를참고한다. </ 참고사항 > 그림 2-4 archetype:generate -DarchetypeCatalog=internal 를실행한화면 그림 2-4 에서볼수있듯이 mvn archetype:generate -DarchetypeCatalog=internal 를실행하면 메이븐에서기본적으로제공하는 58 개의아키타입목록을확인할수있다. mvn archetype:generate 명령을실행하면대화모드 interactive mode 로템플릿프로젝트를생성할수있다. 위키북프로젝트는웹애플리케이션으로개발할계획이기때문에먼저그림 2-4 에서 19 번 mavenarchetype-webapp 를선택한다. 이후과정은 archetype 플러그인에서요구하는정보를제공하면된다. 기본 값을사용하고싶으면값을입력하지않고엔터키를치면된다.

Maven Chapter2 Page 12 그림 2-5 대화모드로위키북프로젝트를생성하는화면 그림 2-5 에서보는바와같이위키북프로젝트생성을위하여필요한기본적인정보 (groupdid 는 net.javajigi, artifactid 는 wikibook) 를입력하고프로젝트를생성한다. 이과정을통하여생성된위키북 프로젝트의구조는그림 2-6 과같다. 그림 2-6 위키북프로젝트의기본디렉토리구조 메이븐기반웹프로젝트의기본웹디렉토리는 src/main/webapp 이다. webapp 디렉토리는서블릿표준 스펙에따른디렉토리구조를따른다. 위키북프로젝트의 pom.xml 파일은다음과같다.

Maven Chapter2 Page 13 <project xmlns="http://maven.apache.org/pom/4.0.0" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelversion>4.0.0</modelversion> <groupid>net.javajigi</groupid> <artifactid>wikibook</artifactid> <packaging>war</packaging> <version>1.0-snapshot</version> <name>wikibook Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupid>junit</groupid> <artifactid>junit</artifactid> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> <build> <finalname>wikibook</finalname> </build> </project> 예제 2-3 위키북프로젝트의 pom.xml 파일 앞에서생성한 myfirst 프로젝트의 pom.xml 파일 ( 예제 2-2) 과위키북프로젝트의 pom.xml 파일 ( 예제 2-3) 을 비교해보면 <packaging/> 엘리먼트가 jar 가아닌 war 로생성된부분이다르다. 위키북프로젝트도 mvn test 를실행해빌드가성공하는지테스트하여프로젝트가정상적으로생성되었는지확인한다. 메이븐에서제공하는 Getting Started 문서를참고해서템플릿프로젝트를생성했더니메이븐의기본설정파일이 pom.xml 이며, 기본적인디렉토리구조와간단한빌드단계에대해서도알게된하루였다. 오늘목표는여기까지였는데메이븐아키타입에대한궁금증이발동해야근까지하게되었다. 프로젝트첫날부터야근하는것은좋은습관이아닌데다음부터는자제해야겠다. 메이븐이제공하는아키타입의종류를파악함으로써메이븐기반의위키북템플릿프로젝트를만들수있었다. 생성한위키북프로젝트를통하여웹자원을관리하는메이븐기본디렉토리를파악할수있었다. 그런데내가정말원하는디렉토리구조는아니다. 오늘생성한위키북프로젝트는웹자원만관리하는구조로되어있는데내가정말원하는디렉토리구조는웹자원과자바소스를같이관리하고싶다. 아무래도이작업은다음날로미루는것이좋겠다. 내일은위키북프로젝트에대한기본적인디렉토리구조를완료하면서메이븐기본설정파일에대하여 집중적으로분석해봐야겠다. 메이븐을공부하기시작한첫날임에도불구하고메이븐설치를완료하고, 기본적인사용방법을익힐수있어퇴근하는발걸음이가볍다.

Maven Chapter2 Page 14 3. 메이븐개요및설정파일 4. 메이븐라이프사이클 lifecycle 5. 메이븐을이용한의존라이브러리관리 6. 메이븐과이클립스통합 7. 메이븐과데이터베이스통합 8. 메이븐프로파일, 배포 9. 리포팅기능을활용한문서관리 10. 메이븐모듈 module 11. 메이븐사내저장소설치및활용

Maven Chapter2 Page 15 12. 표준 POM 파일생성및리팩토링 13. 메이븐아키타입 archetype 14. 새로운프로젝트를시작하면서..