1. 개요

메이븐을 사용하게 되면 POM 파일을 다뤄야 합니다. 

POM은 Project Object Model의 약자인데... pom.xml이라는 파일이 바로 POM 파일이고 이 파일을 통해 dependency라고 부르는 의존성 설정을 하게 됩니다...

그리고 각 dependency는 scope을 가지고 있어요...

종류는 compile, runtime, provided 등의 종류가 있지요...

2. compile

compile은 컴파일때 필요한 것입니다... 

기본값이기 때문에 만일 scope 설정을 안하면 compile이 기본입니다...

3. runtime

runtime은 런타임때 필요한 것입니다.

컴파일할 때는 필요가 없지만 실행할 때는 필요한 것이지요. 

JDBC 드라이버 같은게 되겠습니다.

4. provided

provided는 컴파일때 필요하긴 하지만 런타임때는 JDK 혹은 컨테이너가 제공하는 것입니다.

서블릿이나 JSP 관련 API 같은거죠. 즉 WAS에서 제공하는 servlet-api.jar를 사용하는 경우 (대부분이겠죠) 입니다.

만약 운영환경에서 servlet-api.jar 중복으로 인한 문제가 발생한다면 꼭 provided로 바꿔주셔야 합니다.

5. test

test는 조금 특별한데 테스트 코드를 컴파일할때 필요하지만 배포때는 제외가 됩니다. (따라서 굳이 운영 환경에 JUnit 의존성을 삭제할 필요가 없어요)

easymock, JUnit 같은거죠.

6. system

system은 provided와 유사하지만 JAR 파일을 직접 사용합니다...

이 때는 JAR 파일의 위치를 지정하는 systemPath 엘리먼트가 따라와야 해요...