👜
scope
- compile (default) : 아무것도 지정되지 않았을 경우 설정되는 기본 설정값.이 값으로 설정하는 경우 모든 클래스 경로에서 사용할 수 있고, 컴파일 및 배포 시 같이 제공된다.해당 프로젝트에 종속된 다른 프로젝트에도 적용될 수 있다.
- provided : compile과 유사하나, JDK 혹은 컨테이너가 런타임 시에만 해당 라이브러리를 제공한다.컴파일 혹은 테스트 경로에서만 사용할 수 있으며, 배포 시에는 빠진다.
- runtime : 컴파일 시에는 사용되지 않고, 실행될 때만 사용된다.런타임과 테스트 경로에서는 있지만, 컴파일 클래스 경로에는 존재하지 않는다.
- test : 해당 scope를 사용하는 경우는, 테스트 시에만 해당 라이브러리를 사용한다는 의미이다.응용 프로그램의 정상적인 사용 시에는 필요 없다는 의미로 테스트 컴파일과 실행 단계에서만 사용하며, 종속된 다른 프로젝트에는 영향을 미치지 않는다.
- system : provided와 유사하나, 저장소에서 관리되지 않고 직접 관리하는 JAR를 추가한다.해당 범위에 있는 라이브러리는 artifact 단위에서는 항상 사용할 수 있으나 repository에 존재하지 않는다.해당 범위를 사용하는 경우에는 dependency 설정에 systemPath를 추가해서 작성해야 한다.(어느 경로에 JAR 파일을 둬야 하는지 지정해줘야 함, ${java.home}/lib 등과 같이 기술)