csmoon1010의 SW 블로그

Maven - (부스트코스) 본문

웹/백엔드

Maven - (부스트코스)

csmoon1010 2021. 4. 8. 17:12

1. 개요

- 애플리케이션이 복잡해지면서 반복적으로 진행하는 작업을 지원하기 위한 도구

- Maven을 사용해 다음과 같은 일을 처리할 수 있다.

  • 빌드(Build)
  • 패키징
  • 문서화
  • 테스트와 테스트 리포팅
  • git
  • 의존성 관리
  • 형상관리서버(svn 등)와의 연동 (SCMs)

- CoC (Convention over Configuration) : 프로그램의 소스 파일 위치, 컴파일된 파일들의 위치 등의 관습

⇨ Maven의 사용은 CoC에 대해서 알아나가는 것!

 

 

 

2. 장점

- 편리한 의존성 라이브러리 관리 : 설정 파일을 관리해 직접 다운로드하는 불편함 해소

- 일관된 방식의 빌드 가능

- 다양한 플러그인 : 자동화의 효과

 

 

 

3. pom.xml

Maven 사용 시의 설정 파일

<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의 버전
  • groupId : 프로젝트를 생성하는 조직의 고유 아이디 (일반적으로 도메인 이름을 거꾸로 적음)
  • artifactId : 해당 프로젝트에 의하여 생성되는 artifact의 고유 아이디
    Maven을 이용하여  pom.xml을 빌드할 경우 : artifactid-version.packaging (ex> examples-1.0-SNAPSHOT.jar)
  • packaging : 해당 프로젝트의 packaging 형태 (ex> jar, war, ear 등)
  • version : 프로젝트의 현재 버전. 라이브러리를 편하게 관리할 수 있는 버전 관리 기능.
    (프로젝트가 개발 중일 때는 SNAPSHOT을 접미사로 사용)
  • name : 프로젝트의 이름
  • url : 프로젝트 사이트가 있다면 사이트 URL을 등록
  • dependencies : 프로젝트가 의존하고 있는 라이브러리들 (의존성 관리)

 

 

4. Maven 프로젝트 디렉토리 구조

 

 

 

5. Maven 프로젝트 생성

(1) File - New - Maven Project - Archetype(아키타입) 선택

**Archetype(아키타입) : 일종의 프로젝트 템플릿 (웹앱 : maven-archetype-webapp)

(2) Maven project 정보 설정 : groupid, artifact id 입력

(3) pom.xml 에 필요한 라이브러리 추가

- JDK 1.8 사용 : <configuration> 설정, Java EE Integration enable

- WAS의 Tomcat 설정 :  javax.servlet-api 설정

  ※ scope

  • compile : 컴파일 할 때 필요. 테스트 및 런타임에도 클래스 패스에 포함. (scope 을 설정하지 않는 경우 기본값)
  • runtime : 런타임에 필요. 컴파일 시에는 필요하지 않지만, 실행 시에 필요한 경우. (ex> JDBC 드라이버)
  • provided : 컴파일 시에 필요하지만 배포 시 제외. 실제 런타임 때에는 컨테이너 같은 것에서 제공되는 모듈.
    (ex> servlet, jsp api 등)
  • test : 테스트 코드를 컴파일 할 때 필요하지만 배포 시 제외. 테스트 시 클래스 패스에 포함

- JSTL 사용 : pom.xml 설정 + web.xml과 .settings/org.eclipse.wst.common.project.facet.core.xml에서 dynamic web module ver 변경

 

' > 백엔드' 카테고리의 다른 글

WEB API - (부스트코스)  (0) 2021.04.09
JDBC - (부스트코스)  (0) 2021.04.08
JSP의 JSTL & EL - (부스트코스)  (0) 2021.04.05
JSP의 Scope - (부스트코스)  (0) 2021.03.30
JSP의 redirect & forward - (부스트코스)  (0) 2021.03.23
Comments