Maven 은 Apache 재단에서 제작한 프로젝트로 Java 기반의 프로젝트 세팅에 있어서 매우 손쉽게 프로젝트 관리를 지원해주는 오픈소스 프로젝트이다. 


Maven 을 사용함으로써 얻을 수 있는 장점은 다음과 같다.


1. Library 세팅 및 관리의 용이성


2. 간소화된 빌드와 배포


3. 라이프사이클 각각에 대한 테스트 환경


4. 프로젝트 프로필 관리의 용이함


5. 프로젝트 세팅 통일성 유지



Maven 은 독자적인 LifeCycle 을 갖고 있으며, 프로젝트를 이 LifeCycle 에 따라 빌드하고 배포까지 진행할 수 있다. 

이는 Java 프로젝트에 있어서 동일한 구조의 통일성을 줄 수 있으며, 개발자는 좀 더 개발 자체에만 집중할 수 있는 환경이 된다.


Maven 은 다음 링크에서 설치할 수 있다.

https://maven.apache.org/download.cgi


Maven 은 POM(Project Object Model) 에 대한 정보를 담은 pom.xml 이라는 설정파일을 필요로하며, 이 설정파일을 토대로 프로젝트에 대한 정보를 수집하고 해석한다.


Pom.xml 은 다음과 같은 형태로 구성된다.



<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>Dummy</groupId>
<artifactId>Test</artifactId>
<version>1.0-SNAPSHOT</version>
    <dependencies>
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency>
    </dependencies>
</project>


설정의 항목들은 다음과 같다.


<project> : pom 파일의 root Element 로, pom 파일임을 validation 해준다.

<modelVersion> : POM 파일이 사용되는 버전을 나타낸다.

<groupId> : 프로젝트의 소속을 식별하는 ID 값이다.

<artifactId> : 프로젝트 빌드 결과로 나올 JAR 파일에 대한 대표이름이다.

<version> : 프로젝트 버전에 대한 정보를 기술한다. 개발용은 주로 SNAPSHOT 이라는 명칭을 붙여 버전별로 관리한다.

<packaging> : 프로젝트를 패키징할 방식을 지정한다. 주로 JAR나 톰캣에서 사용하는 WAR 형태로 패키징한다.

<name> : 프로젝트의 이름을 명시한다.

<url> : 프로젝트에 대한 정보를 참고할 수 있는 Reference 사이트가 기재된다.

<description> : 프로젝트에 대한 간략한 설명이 포함된다.


<dependencies> : 하위에 <dependency> 항목들을 포함하며 외부 라이브러리에 대한 의존성을 관리한다. https://mvnrepository.com/ 에서 Maven 에서 관리할 수 있는 Dependency 들을 참조할 수 있다.

<repositories> : 프로젝트에 대한 각종 dependency 들이 참조할 수 있는 원격 Repository 를 설정한다.

<profile> : 개발환경에 대한 프로필들을 관리한다.


프로젝트에 알맞게 Maven 설정을 하고나면, 해당 프로젝트를 Maven 의 라이프사이클 위에서 동작시킬 수 있다. 

다음은 주로 사용하는 Maven 커맨드 들의 목록이다.



- Maven 의 주요 커맨드 목록

 Maven 을 실행시키는 커맨드에는 몇가지 종류가 있다. IDE 등을 통해 코드를 작성하고 커맨드로 배포할 수 있다.


(1) mvn compile – pom.xml 이 있는 경로에서 프로젝트를 빌드하는 커맨드이다. Pom.xml 의 옵션에 따라 컴파일러의 버전도 선택이 가능하다.


(2) mvn test : test 클래스가 위치한junit의 단위 클래스를 통해 테스트하게 된다.


(3) mvn package : pom.xml 파일 내에 packaging 의 설정을 해놓은 경우, mvn package 커맨드로 패키징을 할 수 있다

 이 때, compile > test-compile > test > package 순으로 goal 이 실행된 다음 jar/war 파일이 target 디렉토리 내 에 생성된다 artifactId-version.packaging 의 명명규칙으로 배포되며 war 배포를 위해서는 maven-war-plugin 이 필요하다.


(4) mvn install : 압축한 jar 파일을 local repository에 등록하는goal로 일반적으로 package 이후 수반된다.


(5) mvn deploy : jar/war 파일을 remote repository 에 등록한다.



주로 프로젝트 환경 구축 시, Maven 커맨드를 IDE 의 빌드환경에 연동시켜서 한꺼번에 구동시키는 경우가 많다.

하지만, mvn 커맨드를 쉘에 입력해서 독자적으로 빌드도 가능하니 알아두도록 하자.


+ Recent posts