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 은 다음과 같은 형태로 구성된다.
설정의 항목들은 다음과 같다.
<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 커맨드를 쉘에 입력해서 독자적으로 빌드도 가능하니 알아두도록 하자.
'Server > Basic' 카테고리의 다른 글
프록시(Proxy) 서버의 정의와 종류에 대하여 (0) | 2018.09.26 |
---|---|
ADN(Application Delivery Network)이란? (0) | 2018.09.09 |
Fault Tolerant System (0) | 2018.08.27 |
CDN (Contents Delivery Network) 이란? (0) | 2018.08.15 |
대용량 Data 처리를 위한 웹 서비스의 샤딩(Sharding) 기법 (0) | 2018.08.13 |