메모

[Maven ] pom.xml 의 scope란?

surimi🍥 2021. 2. 24. 15:02
반응형

pom.xml ( Project Object Model )의 모든 dependency는 scope 범위를 갖고있는데,

이 <scope>는 compile, provided, runtime, test, system 등의 값이 있다.

이 범위는 종속성의 전이성을 제한하고 다양한 빌드 작업에 사용되는 클래스 경로에 영향을 주기 위해 사용된다.

# compile

dependency에 scope을 따로 설정 하지 않았을 경우의 default 범위

Compile 시점에 필요하다.

프로젝트의 모든 Class Path에 추가된다.

# runtime

런타임(프로젝트 실행 시점)시 해당 dependency를 사용한다.

ex) JDBC 드라이버

 

Runtime, test시 Class Path에 추가된다.

 

# provided

Compile 시점에 필요하다.

Scope 값을 provided로 설정한 dependency에 대해서는

Runtime 시점에 JDK 혹은 컨테이너가 제공한다.

 

Wep Application 개발 시
Servlet API or Java EE API들은
provided Scope으로 지정해야한다.
왜냐하면 톰캣과 같은 컨테이너가 제공해주기 때문이다.
ex) Servlet API

 

 

 

 

 

# test

테스트 컴파일 실행 단계에서만 사용할 수 있으며

배포때는 제외된다.
ex) easymock, JUnit

# system

provided와 유사하지만 JAR 파일을 직접 사용한다.

JAR 파일의 위치를 지정하는 systemPath 속성이 붙어야 한다.

 

출처:

goodgid.github.io/Spring-Maven-Dependency-Scope-Concept/

stackoverflow.com/questions/26975818/what-is-scope-under-dependency-in-pom-xml-for

반응형