-
[Spring] Maven에 대해 이해하기Server/Spring 2020. 8. 11. 05:00
안녕하세요 :)
이번에 동아리 지인들과 Spring 스터디를 진행하게 되었는데요.
스프링을 시작하려고 보니까 Maven이라는 언어가 굉장히 많이 등장하고 있더라고요.
그래서 스프링 시작 전에 간단하게 Maven 구조, 프로젝트는 어떤 것인지 공부를 해봤습니다!
Maven이란?
우선 Maven을 이해하기 위해 CoC라는 개념이 등장합니다.
CoC는 Conversion over Configuration입니다.
배치의 관습? 정도로 직역할 수 있을 것 같은데 CoC란 직역과 비슷하게 일종의 관습을 말합니다.
프로그램을 구성할 때 소스파일은 어떤 위치에 있어야 하고, 컴파일된 파일들은 어떤 위치에 있어야 하는지 미리 정해놓은 것입니다.
간단하게 한 줄로 말하면, Maven은 자바 프로젝트의 Build를 자동화해주는 Build tool입니다.
자바 소스를 Compile 하고 package 해서 deploy 하는 일을 자동화해주는 프로젝트, 구조입니다.
이러한 Maven을 사용하면 Build, Packaging, 문서화, 테스트와 테스트 리포팅, git, 의존성 관리, svn 등과 같은 형상 관리 서버와 연동(SCMs), 배포 등의 작업을 손쉽게 할 수 있습니다.
Maven의 장점?
Maven을 사용할 경우 편리한 점들이 많은데 많은 사람들은 편리한 의존성 라이브러리 관리가 가장 큰 장점이라고 꼽습니다.
Maven을 사용하면 설정 파일에 코드를 적어주면 라이브러리를 직접 다운로드하지 않아도 사용이 가능합니다.
Maven을 사용하게 되면 Maven에 설정한 대로 모든 개발자가 일괄된 방식으로 빌드를 수행하기 때문에 프로젝트에 참여하는 개발자가 많을 때 장점일 수 있을 것 같습니다.
또한 Maven은 다양한 플러그인을 제공해주기 때문에 많은 일을 자동화시킬 수 있습니다.
Maven이 참조하는 설정 파일
- settings.xml
Maven Tool 자체에 관련된 설정을 담당합니다.
conf 폴더 아래에 위치합니다.
Maven 자체 설정 값을 바꾸는 일은 드물기 때문에 보통 pom.xml을 조작합니다. - pom.xml
최상위 디렉터리에 위치합니다.
POM(Project Object Model)을 설정하는 부분으로 프로젝트 내 빌드 옵션을 설정하는 부분입니다.
pom.xml 파일 안의 태그 의미
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.springframework.samples</groupId> <artifactId>spring-petclinic</artifactId> <version>2.3.1.BUILD-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.1.RELEASE</version> </parent> <name>petclinic</name> </project>
위의 코드는 pom.xml 파일의 일부 코드입니다.
- project : pom.xml파일의 최상위 루트 엘리먼트입니다.
- modelVersion: POM model의 버전입니다.
- groupId: 프로젝트를 생성하는 조직의 고유 아이디를 결정합니다. (일반적으로 도메인 이름을 거꾸로 적음)
- artifactId: 해당 프로젝트에 의해 생성되는 artifact의 고유 아이디를 결정합니다. Maven을 이용하여 pom.xml을 빌드할 경우 artifactid-version.packaging과 같은 규칙으로 artifact가 생성됩니다.
- packaging: 해당 프로젝트를 어떤 형태로 packaging 할 것인지 결정합니다. (대표적으로 jar, war, ear 등)
- version: 프로젝트의 현재 버전. Maven의 버전 관리 기능은 라이브러리 관리를 편하게 합니다.
- name: 프로젝트의 이름.
- url: 프로젝트 사이트가 있다면 등록합니다.
마무리
Maven을 이용할 경우 얻게 되는 가장 큰 이점은 Dependency Management 기능입니다.
위 pom.xml 파일에서 <dependencies/> 엘리먼트가 Dependency Management 기능의 핵심입니다.
해당 엘리먼트 안에 필요한 라이브러리를 지정하게 됩니다.
* 해당 포스팅은 아래의 자료를 참고했습니다.
www.edwith.org/boostcourse-web/lecture/16723/
'Server > Spring' 카테고리의 다른 글
[Spring] Spring IoC/DI Container (0) 2020.08.11 [Spring] Spring이란? (0) 2020.08.11 - settings.xml