길민호(ethan.mino)
코딩수첩
길민호(ethan.mino)
전체 방문자
오늘
어제
  • 분류 전체보기 (215)
    • Computer Science (0)
    • Web (6)
      • CSS (0)
      • HTML (0)
    • Node.js (0)
    • Javascript (2)
    • Java (46)
      • Spring (27)
      • Jsp (0)
    • C\C++ (2)
    • Programming (0)
    • AI (0)
    • Database (7)
    • Git (5)
    • Algorithm (119)
      • Stack (0)
      • Queue (0)
      • Linked List (0)
      • Sort (0)
      • Simulation (27)
      • Recursion (0)
      • Backtracking (4)
      • Two Pointer (3)
      • Dynamic Programming (19)
      • Greedy (10)
      • Graph (3)
      • Dijkstra (1)
      • BFS\DFS (8)
      • Floyd (1)
      • MST (4)
      • Tree (4)
      • Binary Search (8)
      • Binary Search Tree (4)
    • IntelliJ (4)
    • Vscode (0)
    • Operating System (0)
    • 후기 (3)
    • 성장일지 (13)
    • 스터디 (7)
    • 설치 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • ㅡ

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
길민호(ethan.mino)

코딩수첩

Maven이란?
Java/Spring

Maven이란?

2020. 7. 10. 03:41

1. Maven이란?

  • 프로젝트가 복잡해질수록 사용하는 라이브러리가 많이지고, 프로젝트에 참가하는 사용자가 많아질수록 라이브러리 관리는 어려워진다. 또한 프로젝트가 복잡해질수록 소스를 컴파일하고 배포하는 것도 점점 어려워진다.
  • Maven은 이러한 문제를 해결하기 위한 다양한 도구들 중 하나이다.
  • Maven은 지금까지 애플리케이션을 개발하기 위해 반복적으로 진행해왔던 작업들을 지원하기 위해 등장한 도구이다.
  • Maven을 사용하면 빌드, 패키징, 문서화, 테스트와 테스트 리포팅, git, 의존성 관리, svn등과 같은 형상관리서버와 연동, 배포 등의 작업을 손쉽게 할 수 있다.
  • Maven을 이해하려면 CoC(Convention over Configuration)라는 단어를 먼저 이해해야한다.
  • CoC란 일종의 관습을 말하는데, 예를 들자면 프로그램의 소스파일은 어떤 위치에 있어야 하고, 소스가 컴파일된 파일들은 어떤 위치에 있어야 하고 등을 미리 정해놨다는 것이다.
  • Maven을 사용한다는 것은 이러한 관습 CoC에 대해서 알아나가는 것이라고 할 수 있다.

2. Maven을 사용할 경우 얻게 되는 이점

  • Maven의 장점으로는 의존성 라이브러리 관리가 있다. 
  • 관련된 라이브러리가 많아질수록 라이브러리를 다운로드하여 /WEB-INF/lib 폴더에 복사하여 사용하는 것은 상당히 불편하다.
  • Maven을 사용하면 설정 파일에 몇 줄 적어줌으로써 직접 다운로드 받지 않아도 라이브러리를 사용할 수 있다.
  • 또한 프로젝트에 참가하는 개발자가 많아지면, 프로젝트를 빌드하는 방법에 대해 가이드 하는 것도 쉽지 않은데, Maven을 사용하게 되면 Maven에 설정한 대로 모든 개발자가 일관된 방식으로 빌드를 수행할 수 있게 된다.
  • 또한 Maven은 다양한 플러그인을 제공하기 때문에, 많은 일들을 자동화 시킬 수 있다.

3. Maven 기본

  • Archetype을 이용하여 Maven 기반 프로젝트를 생성할 경우, 생성된 프로젝트 하위에 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)
  • modeVersion : POM model의 버전.
  • groupId : 프로젝트를 생성하는 조직의 고유 아이디. 일반적으로 도메인 이름을 거꾸로 적는다.
  • artifactId : 해당 프로젝트에 의하여 생성되는 artifact의 고유 아이디(pom.xml을 빌드할 경우 다음과 같은 규칙으로 artifact가 생성된다. artifactid-version.packaging. 이 예의 경우 examples-1.0-SNAPSHOT.jar 파일이 생성된다.)
  • packaging : 해당 프로젝트를 어떤 형태로 packaging 할 것인지 나타냄. jar, war, ear 등이 해당된다.
  • version : 프로젝트의 현재 버전. 개발 중일 때는 SNAPSHOT을 접미사로 사용하며, Maven의 버전 관리 기능은 라이브러리 관리를 편하게 한다.
  • name : 프로젝트 이름
  • url : 프로젝트 사이트가 있따면 사이트의 URL을 등록하는 것이 가능하다.

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

 

maven-archetype-webapp의 디렉터리 구조

 

 

 

참조 URL

  • https://www.edwith.org/boostcourse-web/lecture/16723/
  • https://www.edwith.org/boostcourse-web/lecture/16724/

 

'Java > Spring' 카테고리의 다른 글

Spring Framework란?  (0) 2020.07.11
pom.xml  (0) 2020.07.11
스웨거 (Swagger)란?  (0) 2020.07.01
Rest Controller란?  (0) 2020.07.01
Post 방식으로 데이터 전송시 한글이 깨지는 문제  (0) 2020.06.30
    'Java/Spring' 카테고리의 다른 글
    • Spring Framework란?
    • pom.xml
    • 스웨거 (Swagger)란?
    • Rest Controller란?
    길민호(ethan.mino)
    길민호(ethan.mino)
    💻 호기심 많은 서버 개발자 길민호입니다.

    티스토리툴바