Maven이란 자바용 프로젝트 관리 도구이다.
프로젝트를 위해 작성한 Java코드나 여러 자원들(.xml, .jar, .properties)를 JVM이나 톰캣같은 WAS가 인식할 수 있는 구조로 패키징 하는 과정 및 결과물이다.
또 단순히 컴파일해주는 작업 뿐만 아니라, 테스팅, 검사, 배포까지 일련의 작업들을 통틀어 빌드라고 한다.
Maven은 Apache사에서 만든 빌드툴(build tool)이다.
pom.xml파일을 통해 정형화된 빌드 시스템으로 프로젝트 관리를 해준다.
프로젝트의 전체적인 라이프 사이클을 관리한다.
플러그인을 구동해주는 프레임워크로, 모든 작업은 플로그인에서 수행하게된다.
메이븐은 정해진 라이프 사이클을 통해 프로젝트를 빌드한다.
메이븐 라이프 사이클의 종류는 기본, clean, site가 있다.
각 라이프 사이클 안에는 더 작은 단위의 빌드 단계가 정의되어 있는데 이를 phase라고 한다.
phase
는 논리적인 빌드 단계이고, 실제로는 phase
에 연결된 plug-in
있고 plug-in
이 수행하는 명령을 goal
이라고 한다.
라이프 사이클의 세부 순서와 설명은 이 블로그 를 참조하면 좋다.
요약하자면 빌드 순서는 Compile - Test - Package 이다.
Clean -> init -> compile -> test-compile -> test -> package -> integration-test -> verify -> install -> deploy -> site
Maven_HOME/conf
에 위치프로젝트마다 하나의 pom.xml파일이 있다.
프로젝트의 모든 설정, 의존성 등을 설정할 수 있다.
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>
해당 엘리먼트 안에 필요한 라이브러리를 지정하게 됩니다.
https://www.edwith.org/boostcourse-web-be/lecture/58937/
https://goddaehee.tistory.com/199
https://taes-k.github.io/2019/05/31/spring-build-tools/
https://maven.apache.org/what-is-maven.html
https://sjh836.tistory.com/131