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
'메모' 카테고리의 다른 글
[ C 언어 ] escape 문자 (0) | 2021.03.25 |
---|---|
티스토리에서 pdf 뷰어 넣는 HTML 코드 (3) | 2021.03.18 |
web.xml - <welcome-file-list> 란? (0) | 2021.02.24 |
[ starUML ]다이어그램 툴 (0) | 2021.02.03 |
[ vscode ] Workspace에서 필요없는 폴더/파일 숨기기 (0) | 2021.01.22 |