1. Maven이란?
- 프로젝트가 복잡해질수록 사용하는 라이브러리가 많이지고, 프로젝트에 참가하는 사용자가 많아질수록 라이브러리 관리는 어려워진다. 또한 프로젝트가 복잡해질수록 소스를 컴파일하고 배포하는 것도 점점 어려워진다.
- Maven은 이러한 문제를 해결하기 위한 다양한 도구들 중 하나이다.
- Maven은 지금까지 애플리케이션을 개발하기 위해 반복적으로 진행해왔던 작업들을 지원하기 위해 등장한 도구이다.
- Maven을 사용하면 빌드, 패키징, 문서화, 테스트와 테스트 리포팅, git, 의존성 관리, svn등과 같은 형상관리서버와 연동, 배포 등의 작업을 손쉽게 할 수 있다.
- Maven을 이해하려면 CoC(Convention over Configuration)라는 단어를 먼저 이해해야한다.
- CoC란 일종의 관습을 말하는데, 예를 들자면 프로그램의 소스파일은 어떤 위치에 있어야 하고, 소스가 컴파일된 파일들은 어떤 위치에 있어야 하고 등을 미리 정해놨다는 것이다.
- Maven을 사용한다는 것은 이러한 관습 CoC에 대해서 알아나가는 것이라고 할 수 있다.
2. Maven을 사용할 경우 얻게 되는 이점
- Maven의 장점으로는 의존성 라이브러리 관리가 있다.
- 관련된 라이브러리가 많아질수록 라이브러리를 다운로드하여 /WEB-INF/lib 폴더에 복사하여 사용하는 것은 상당히 불편하다.
- Maven을 사용하면 설정 파일에 몇 줄 적어줌으로써 직접 다운로드 받지 않아도 라이브러리를 사용할 수 있다.
- 또한 프로젝트에 참가하는 개발자가 많아지면, 프로젝트를 빌드하는 방법에 대해 가이드 하는 것도 쉽지 않은데, Maven을 사용하게 되면 Maven에 설정한 대로 모든 개발자가 일관된 방식으로 빌드를 수행할 수 있게 된다.
- 또한 Maven은 다양한 플러그인을 제공하기 때문에, 많은 일들을 자동화 시킬 수 있다.
3. Maven 기본
- Archetype을 이용하여 Maven 기반 프로젝트를 생성할 경우, 생성된 프로젝트 하위에 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>kr.or.connect</groupId>
<artifactId>examples</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>mysample</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>
각각의 태그의 의미는 다음과 같다.
- project : pom.xml 파일의 최상위 루트 엘리먼트(Root Element)
- modeVersion : POM model의 버전.
- groupId : 프로젝트를 생성하는 조직의 고유 아이디. 일반적으로 도메인 이름을 거꾸로 적는다.
- artifactId : 해당 프로젝트에 의하여 생성되는 artifact의 고유 아이디(pom.xml을 빌드할 경우 다음과 같은 규칙으로 artifact가 생성된다. artifactid-version.packaging. 이 예의 경우 examples-1.0-SNAPSHOT.jar 파일이 생성된다.)
- packaging : 해당 프로젝트를 어떤 형태로 packaging 할 것인지 나타냄. jar, war, ear 등이 해당된다.
- version : 프로젝트의 현재 버전. 개발 중일 때는 SNAPSHOT을 접미사로 사용하며, Maven의 버전 관리 기능은 라이브러리 관리를 편하게 한다.
- name : 프로젝트 이름
- url : 프로젝트 사이트가 있따면 사이트의 URL을 등록하는 것이 가능하다.
또한 Maven을 이용할 경우 얻게 되는 큰 이점 중 하나는 Dependency Management 기능이다. 위 pom.xml 파일에서 <dependency> 엘리먼트가 Dependency Management 기능의 핵심이라고 할 수 있다. 해당 엘리먼트 안에 필요한 라이브러리를 지정하게 된다.
참조 URL
- https://www.edwith.org/boostcourse-web/lecture/16723/
- https://www.edwith.org/boostcourse-web/lecture/16724/
'Java > Spring' 카테고리의 다른 글
Spring Framework란? (0) | 2020.07.11 |
---|---|
pom.xml (0) | 2020.07.11 |
스웨거 (Swagger)란? (0) | 2020.07.01 |
Rest Controller란? (0) | 2020.07.01 |
Post 방식으로 데이터 전송시 한글이 깨지는 문제 (0) | 2020.06.30 |