본문 바로가기
Java

Maven이란?

by seeker00 2021. 7. 4.

Maven

애플리케이션을 개발하기 위해 반복적으로 진행해왔던 작업들을 지원하기 위하여 등장한 도구
빌드(Build), 패키징, 문서화, 테스트와 테스트 리포팅, git, 의존성관리, svn 등과 같은 형상 관리 서버와 연동(SCMs), 배포 등의 작업을 손쉽게 할 수 있도록 돕는다
Maven을 사용한다는 것은 CoC에 대해서 알아나가는 것

  • 편리한 의존성 라이브러리 관리
  • Maven에 설정한 대로 모든 개발자가 일관된 방식으로 빌드를 수행
  • 다양한 플러그인을 제공하여 많은 일들을 자동화 할 수 있다

Maven 기본

  • Maven 기반 프로젝트를 생성할 경우 생성된 프로젝트 하위에 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>

pom.xml 파일 내 태그 의미

project : pom.xml 파일의 최상위 루트 엘리먼트(Root Element)
modelVersion : POM model의 버전
groupId : 프로젝트를 생성하는 조직의 고유 아이디를 결정, 일반적으로 도메인 이름을 거꾸로 적는다
artifactId : 해당 프로젝트에 의하여 생성되는 artifact의 고유 아이디를 결정, Maven을 이용하여 pom.xml을 빌드할 경우 다음과 같은 규칙으로 artifact가 생성된다

  • artifactid-version.packaging. 해당 예의 경우 빌드할 경우 examples-1.0-SNAPSHOT.jar 파일이 생성된다

packaging : 해당 프로젝트를 어떤 형태로 packaging 할 것인지 결정, jar, war, ear 등이 있다
version : 프로젝트의 현재 버전, Maven의 버전 관리 기능은 라이브러리 관리가 편리하도록 돕는다

  • 프로젝트가 개발 중일 때는 SNAPSHOT을 접미사로 사용

name : 프로젝트의 이름
url : 프로젝트 사이트가 있다면 사이트 URL을 등록하는 것이 가능
dependencies : Dependency Management 기능의 핵심, 해당 엘리먼트 안에 필요한 라이브러리를 지정할 수 있다

CoC(Convention over Configuration)

일종의 관습

  • 예를 들자면 프로그램의 소스파일은 어떤 위치에 있어야 하고, 소스가 컴파일된 파일들은 어떤 위치에 있어야 하고 등을 미리 정해둔 것을 말한다
  • 관습에 이미 익숙한 사용자는 쉽게 Maven을 사용할 수 있는데, 관습에 익숙하지 않은 사용자는 이러한 제약사항에 대해서 심한 거부감을 느낄 수 있다



출처) 부스트코스 풀스택 강의 https://www.boostcourse.org/web316/lecture/16723?isDesc=false

'Java' 카테고리의 다른 글

[Java Collections]ArrayDeque 알아보기  (0) 2025.06.10
JDBC 란?  (0) 2021.07.04
자바 환경변수  (0) 2021.05.08