Maven은 자바 프로젝트의 빌드(build)를 자동화 해주는 빌드 툴(build tool)
즉, 자바 소스를 compile하고 package해서 deploy하는 일을 자동화 해주는 것
2. Maven을 왜 사용해야 하나?
Maven은 필요한 라이브러리를 특정 문서(ex - pom.xml)에 정의해 놓으면 내가 사용할 라이브러리 뿐만 아니라 해당 라이브러리가 작동하는데에 필요한 다른 라이브러리들까지 관리하여 네트워크를 통해서 자동으로 다운받아 준다.
즉, 빌드할 때 필요한 자원들을 Maven에서 종합적으로 관리하는 것으로 볼 수 있다.
3. 빌드와 빌드 도구
빌드
소스코드 파일을 컴퓨터에서 실행할 수 있는 독립 소프트웨어 가공물로 변환하는 과정 또는 그에 대한 결과물
쉽게 푼다면, 우리가 작성한 소스코드(java), 프로젝트에서 쓰인 각각의 파일 및 자원 등(.xml, .jpg, .jar, .properties)을 JVM이나 톰캣같은 WAS가 인식할 수 있는 구조로 패키징 하는 과정 및 결과물이라고 할 수 있다.
빌드 도구
빌드 도구란 프로젝트 생성, 테스트 빌드, 배포 등의 작업을 위한 전용 프로그램.
빠른 기간동안 계속해서 늘어나는 라이브러리 추가, 프로젝트를 진행하며 라이브러리의 버전 동기화의 어려움을 해소하고자 등장.
초기의 java 빌드도구로 Ant를 많이 사용하였으나 최근 많은 빌드도구들이 생겨나 Maven이 많이 쓰였고, 현재는 Gradle이 많이 쓰인다.
4. Maven 설정 파일
settings.xml
메이븐 빌드 툴과 관련한 설정파일
MAVEN_HOME/conf 디렉토리에 위치 (메이븐 설치 시 기본 제공)
settings.xml의 설정
pom.xml
POM = Project Object Model(프로젝트 객체 모델)
POM은 pom.xml파일을 말하며 pom.xml은 메이븐을 이용하는 프로젝트의 root에 존재하는 xml 파일이다.
(하나의 자바 프로젝트에 빌드 툴을 maven으로 설정하면, 프로젝트 최상위 디렉토리에 "pom.xml"이라는 파일이 생성된다.)
Maven의 기능을 이용하기 위해서 POM이 사용되며, 프로젝트 내 빌드 옵션을 설정하는 부분
파일은 프로젝트마다 1개이며, pom.xml만 보면 프로젝트의 모든 설정, 의존성 등을 알 수 있다.
다른 파일이름으로 지정할 수도 있다. (mvn -f 파일명.xml test). 하지만 pom.xml으로 사용하기를 권장한다.
5. 느낀점
과거에 스프링부트 공부할 때 Maven을 통해서 빌드를 했었다. 그때는 좀 더, 스프링부트에 대해 수동적으로만 들어서 pom.xml이 프로젝트를 가동할 때 사용되는 중요한 파일이라고는 생각했었다.
그리고 회사에서 프로젝트를 Eclipse에서 Tomcat을 통해 웹을 가동하는데, 빌드 도구로 Maven을 사용하고 있었다.
근데, 문뜩 왜 사용하는지에 대한 원초적인 의문이 들어서 이번 기회에 쓰게 됐다.
어찌됐든, 프로젝트 빌드에 있어 사용하는 것이 Ant, Gradle, Maven 등이 있다. 이 중에서 Maven을 선택하면 프로젝트 최상단에 pom.xml이 생기고 이 파일을 통해서 프로젝트에 필요한 라이브러리가 모여진다. 그리고, Maven을 통해서 실행을 하면 compile > package > deploy까지 자동으로 해준다!