Maven이란?

jungnoeun·2021년 7월 23일
0

bc

목록 보기
6/7
post-custom-banner

Maven이란?

  • 애플리케이션을 개발하기 위해 반복적으로 진행했던 작업들을 지원하기 위한 도구.
  • 빌드, 패키징, 문서화, 테스트와 테스트 리포팅, git, 의존성관리, svn등과 같은 형상관리서버와 연동(SCMs), 배포등의 작업을 손쉽게 할 수 있어야 한다.







CoC

  • Convention over Configuration

  • 일종의 관습
    - 예를 들어 프로그램의 소스파일은 어느 위치에 있어야 하고, 소스가 컴파일된 파일들은 어느위치에 있어야 하는지 미리 정해놓은 것.

  • 관습에 익숙한 사용자는 Maven을 쉽게 사용할 수 있고, 익숙하지 않은 사용자는 이러한 제약사항에 거부감을 느낄 수 있다.

  • Maven을 사용한다는 것은 이러한 관습(CoC)에 대해 알아나가는 것이다.









Maven 사용의 장점

  • 편리한 의존성 라이브러리 관리

    • 여러개의 파일을 다운로드하여 폴더에 복사해 사용하는 방식은 라이브러리가 많아질수록 불편해진다.
    • Maven을 사용하면 설정파일에 몇줄 적어줌으로써 직접 다운로드받지 않아도 라이브러리 사용이 가능하다.
  • Maven에 설정한 대로 모든 개발자가 일관된 방식으로 빌드를 수행할 수 있게 된다.

  • Maven은 다양한 플러그인을 제공해줘서, 굉장히 많은 일들을 자동화시킬 수 있다.









Maven 기본

  • Archetype을 이용하여 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>

태그의 의미

  • project: pom.xml 파일의 최상위 루트 엘리먼트(root element)이다.
  • modelVersion: POM model의 버전이다.
  • groupld: 프로젝트를 생성하는 조직의 고유 아이디를 결정한다. 일반적으로 도메인 이름을 거꾸로 적는다.
  • artifactld: 해당 프로젝트에 의하여 생성되는 artifact의 고유 아이디를 결정한다. Maven을 이용하여 pom.xml을 빌드할 경우 다음과 같은 규칙으로 artifact가 생성된다. artifactid-version.packaging. 위 예의 경우 빌드할 경우 examples-1.0-SNAPSHOT.jar 파일이 생성된다.
  • packaging: 해당 프로젝트를 어떤 형태로 packaging할 것인지 결정한다. jar, war, ear등이 해당된다.
  • version: 프로젝트의 현재버전, 추후 살펴보겠지만 프로젝트가 개발중일 때는 SNAPSHOT을 접미사로 사용한다. Maven의 버전관리기능은 라이브러리 관리를 편하게 해준다.
  • name: 프로젝트의 이름이다.
  • url: 프로젝트 사이트가 있다면 사이트 URL을 등록하는 것이 가능하다.









Dependency Management

  • Maven을 이용할 경우 얻게 되는 큰 이점 중 하나이다.
  • 위의 pom.xml 파일에서 엘리먼트가 Dependency Management 기능의 핵심이라고 할 수 있다.
  • 해당 엘리먼트 안에서 라이브러리를 지정하게 된다.







profile
개발자
post-custom-banner

0개의 댓글