서브메뉴

본문

자바 세상의 빌드를 이끄는 메이븐
자바 세상의 빌드를 이끄는 메이븐
저자 : 박재성
출판사 : 한빛미디어
출판년 : 2011
ISBN : 9788979148138

책소개

실제 프로젝트로 학습하는 생생한 메이븐 활용 전략!

『메이븐』은 메이븐의 기본 기능과 더불어 메이븐을 활용하면서 문제가 발생했을 때의 해결방법을 담았다. 메이븐 설치 및 템플릿 프로젝트 생성 부터 메이븐 라이프사이클, 의존 라이브러리 관리, 메이븐과 이클립스 통합 등 개발 사례를 중심으로 내용을 전개한다. 메이븐을 처음 접하는 개발자도 무리 없이 학습할 수 있도록 저자가 경험했던 프로젝트를 기반으로 프로젝트 시작부터 끝까지 메이븐을 실습하게 구성했다. 프로젝트 초반에 겪는 팀 내 문제점 극복 방법과 프로젝트 완성 후의 희열까지 함께 경험할 수 있다.
[교보문고에서 제공한 정보입니다.]

출판사 서평

실제 프로젝트로 학습하는 생생한 메이븐 활용 전략

아파치 메이븐은 전자정부 프레임워크에서 표준 빌드 툴로 선정되었다. 이름은 익숙하지만, 국내 개발자들에게는 실체와 특징이 명확하지 않는 낯선 툴이다. 이 책은 상당수의 자바 오픈 소스 프로젝트가 메이븐을 빌드 툴로 사용하지만, 이를 현업에 적용하는 것을 어려워하는 개발자를 위해 기획되었다. 메이븐을 처음 접하는 개발자도 무리 없이 학습하게 하려고 저자가 경험했던 프로젝트를 기반으로 프로젝트 시작부터 끝까지 메이븐을 실습하게 구성했다.
프로젝트 초반에 겪는 팀 내 문제점 극복 방법과 프로젝트 완성 후의 희열까지 함께 경험할 수 있다. 책을 읽다 보면 메이븐 사용이 자바 개발자에게 어려운 도전이 아님을 알 수 있다. 메이븐을 활용하면 협업에서 더 큰 시너지를 낼 수 있으며, 개발자가 지향하는 최근의 프로젝트 개발방법론과도 맞아떨어짐을 알게 될 것이다.
급변하는 개발 환경에서 새로운 개발 방법과 마주하는 것을 두려워하지 않는 개발자에게 이 책을 권한다.

● 메이븐 설치 및 템플릿 프로젝트 생성
● 메이븐 라이프사이클
● 의존 라이브러리 관리
● 메이븐과 이클립스 통합
● 메이븐과 데이터베이스 통합
● 리포팅 기능을 이용한 문서 관리
● 메이븐 사내 저장소 설치 및 활용
● 메이븐 아키타입

[저자 서문]
누군가 나에게 “메이븐! 좋은 도구인가요?”라고 묻는다면 “예, 정말 좋은 도구입니다.”라고 대답할 것이다. 다른 곳, 다른 순간에 누군가 나에게 “메이븐! 좋은 도구인가요?”라고 묻는다면 “아니요. 정말 사용하기 불편한 도구입니다.”라고 대답할 것이다. 우리 삶의 순간 순간에 정답이라고 생각했던 것이 다른 순간에는 바람직하지 않은 것이 얼마나 많은가? 최근에는 대부분의 사람들이 맞는 길이라고 부추기고 있지만 정작 걸어보면 잘못된 길이라는 것을 느낄 때가 점점 많아지고 있다.
메이븐 빌드 툴에 대한 선호도는 개발자에 따라 극명하게 나뉘는 경우가 많다. 메이븐이라고 하면 무조건 반대하는 개발자와 메이븐의 장점을 주장하면서 메이븐에 대한 예찬론을 펼치는 개발자이다. 온라인에서도 메이븐의 한계점을 이야기하는 개발자의 글이 종종 눈에 띈다. 그렇다면 메이븐 책을 쓴 나는 어떤 생각을 가지고 있을까? 나는 내가 메이븐을 주제로 책을 썼다고 해서 메이븐이 무조건 좋다는 이야기는 하고 싶지 않다. 메이븐이 지금까지 등장한 빌드 툴이 가지고 있었던 모든 문제를 해결해 주는 만능툴이라고 이야기하고 싶지도 않다. 혹시나 메이븐에 대한 환상을 품고 서문을 읽고 있다면 책을 던져버리고 다른 책에 눈길을 주는 것이 시간과 돈을 절약하고 정신 건강에 좋을 듯하다.
저자가 메이븐을 강력하게 추천하지 않을 것이라면 도대체 책은 왜 썼을까? 내가 메이븐 책을 쓰게 된 첫 번째 이유는 황당하게 들릴지 모르겠지만 내가 책을 쓰고 있는 시점에 국내에 메이븐 책이 한 권도 나오지 않았기 때문이다(이 글을 쓰고 있는 시점에 번역서가 한 권 나왔다). 상당수의 자바 오픈 소스 프레임워크에서 메이븐을 사용하고 있는데 메이븐과 관련한 책이 한 권도 없다는 것이 의구심이 들었다. 메이븐을 처음 적용할 때 삽질하던 경험이 떠오르면서 내가 한 번 책을 쓰는 것에 도전해야겠다는 것이 가장 큰 이유였다. 책이 대박이 나지는 않더라도 내가 쓴 이 책으로 인해 개발자들이 삽질하는 시간을 줄일 수 있다면 책을 쓴 보람을 느낄 수 있으리라 생각했다.
두 번째 이유는 메이븐에 녹아 있는 빌드 툴과 관련한 접근 방법을 개발자들이 느껴 봤으면 좋겠다는 것이다. 메이븐을 지금 진행하고 있는 프로젝트에 적용하지 않아도 괜찮다. 단지 메이븐이 가지는 철학과 접근 방법을 이해한다면 현재 사용하고 있는 빌드 툴에 비슷한 방식으로 접근할 수 있을 것이다. 메이븐을 비판하는 상당수의 개발자들을 보면 메이븐의 자유도와 유연성이 너무 떨어진다는 것이다. 물론 상황에 따라 맞는 말일 수도 있고 아닐 수도 있다. 하지만 여기서 내가 더 중요하게 생각하는 것은 무분별한 자유도와 유연성은 팀의 공동 작업을 망칠 수도 있다. 개발자 간의 협업이 점점 더 중요해지는 상황에서 일정한 약속과 범위 내에서의 자유도와 유연성을 가져갈 때 성공할 수 있으리라 생각한다. 메이븐이 자유도와 유연성이 떨어진다면 메이븐의 핵심 개념과 관례는 자신의 것으로 만들고 자유도와 유연성을 지원하는 빌드 툴에 접근했을 때 더 큰 시너지 효과가 날 것이다. 그러기 위해서는 메이븐에 대하여 피상적으로만 접근하지 말고 좀 더 깊이 있게 파헤쳐 봐야 할 것이다.
세 번째 이유는 우리 개발자 각자의 성장을 위해서이다. 현재 자바 진영의 상당수 오픈 소스 프레임워크가 메이븐 기반으로 개발되어 있으며, 개발되고 있다. 이 같은 상황에서 오픈 소스 프레임워크를 분석해 적용하려고 한다면 소스 코드를 다운로드한 후 가장 먼저 진행해야 하는 것이 빌드다. 일차적으로 빌드를 진행하고 동작하는 소스를 확인해야 좀 더 깊이 있는 분석 작업을 하는 것이 대부분의 개발자 습성이다. 따라서 자신의 실력을 성장시키기 위하여 좋은 자바 소스를 분석하고 싶다면 가장 기본이 되는 빌드 툴부터 익히는 것이 현명한 선택이리라. 이와 유사한 경우가 최근에 빠르게 변화하고 있는 버전 관리 시스템에서 볼 수 있다. 기존에 가장 많은 점유율을 차지고 있는 툴이 Subversion이었는데 최근에는 Git로 급격하게 바뀌고 있다. 내가 지금 일하고 있는 곳에서 사용하고 있는 도구들은 아니지만 내 자신의 역량을 키우는 데 도움을 줄 수 있는 도구라면 관심을 두고 공부할 필요가 있다는 생각이다.
내가 이 책을 쓰고 있는 시점에 메이븐 3.0 버전이 정식 배포되었다. 따라서 메이븐 3.0 버전으로 업그레이드를 진행할까도 고민했지만 메이븐 3.0에 대한 경험이 없는 상태에서 이론적인 지식만 전달하는 것은 의미가 없을 것으로 생각했다. 특히 메이븐에 대한 나의 직접적인 경험을 기반으로 책을 진행하고 있기 때문에 메이븐 3.0으로 전환하는 것은 바람직하지 않다고 생각했다. 나는 이 책을 통하여 메이븐의 기본 기능을 전달하는 것도 목적이지만 메이븐을 활용하면서 문제가 발생했을 때 어떤 방식으로 문제를 해결했는지에 대한 경험을 전달하고 싶었다. 이 책을 읽는 개발자들도 문제를 해결해 나가는 방식에 초점을 맞추면서 글을 읽었으면 좋겠다. 책 한 권을 통해 기능과 문제에 대한 해결 방법을 모두 제시하기란 힘들다. 그보다는 문제가 발생했을 때 문제를 해결해나가는 방법을 익히는 것이 느린 듯 하지만 더 빠른 접근 방법이다.
아무쪼록 이 책이 메이븐을 활용하고 싶지만 두려움을 느끼는 개발자, 몇 번의 시도를 했지만 번번이 실패를 거듭했던 개발자, 현재 메이븐을 사용하고 있지만 기본적인 기능만 활용하고 있는 개발자, 메이븐을 사용하면서 반복적인 삽질을 하고 있는 개발자에게 작으나마 도움이 될 수 있기를 바란다.
[교보문고에서 제공한 정보입니다.]

목차정보

1. 내가 꿈꾸는 개발 환경
1.1 앤트에 회의감을 느끼다
1.2 메이븐에 빠지게 되다
1.3 이상적인 개발 환경

2. 메이븐 설치 및 템플릿 프로젝트 생성
2.1 메이븐 설치
2.2 메이븐 기반의 템플릿 프로젝트 생성
2.3 메이븐 기본 명령어
2.4 위키북 템플릿 프로젝트 생성

3. 메이븐 설정 파일
3.1 settings.xml 설정 파일
3.2 pom.xml 설정 파일
3.3 최상위 POM 설정 파일
3.4 위키북 프로젝트 기본 디렉토리 설정 완료

4. 메이븐 라이프사이클
4.1 메이븐의 라이프사이클과 페이즈
4.2 메이븐 페이즈와 플러그인
4.3 메이븐 기본 페이즈와 플러그인

5. 메이븐을 이용한 의존 라이브러리 관리
5.1 메이븐의 의존 라이브러리 관리
5.2 위키북 프로젝트에 의존 라이브러리 추가하기

6. 메이븐과 이클립스 통합
6.1 메이븐 eclipse 플러그인 적용 및 개발 환경 설정
6.2 m2eclipse 플러그인 활용하여 빌드하기

7. 메이븐과 데이터베이스 통합
7.1 데이터베이스용 테스트를 자동화하기 위한 개발 환경
7.2 sql 플러그인을 활용한 데이터베이스 통합
7.3 Carbon Five Database Migration 플러그인 활용
7.4 데이터베이스 통합 시 고려할 부분

8. 메이븐 프로파일, 배포
8.1 빌드 이식성
8.2 프로파일
8.3 프로파일 기능을 활용한 리소스 관리
8.4 배포 자동화

9. 리포팅 기능을 활용한 문서 관리
9.1 소스 코드 검사 리포트 생성
9.2 언더커버 테스트 커버리지 툴
9.3 파인드버그 리포트
9.4 PMD 리포트
9.5 CPD 리포트
9.6 제이디펜드 리포트

10. 메이븐 모듈
10.1 메이븐 모듈
10.2 위키북 프로젝트에 모듈 기능 적용
10.3 위키북 프로젝트에 배치 모듈 추가

11. 메이븐 사내 저장소 설치 및 활용
11.1 antrun 플러그인을 활용한 리소스 중복 제거
11.2 메이븐 프로파일을 활용한 공통 리소스 중복 제거
11.3 메이븐 사내 저장소 설치 및 활용
11.4 웹 공통 리소스에 대한 관리

12. 표준 POM 파일 생성 및 리팩토링
12.1 요구사항 분석
12.2 POM 설정 파일 개발
12.3 POM 파일의 효율적인 관리

13. 메이븐 아키타입
13.1 아키타입 생성 및 활용
13.2 전사 표준 아키타입 생성 및 관리
14. 새로운 프로젝트를 시작하면서…
[교보문고에서 제공한 정보입니다.]