scope 설정 종류
⒜ compile : scope 설정의 default 값으로 되어있다. test 및 runtime 에도 클래스 패스에 포함된다.
⒝ provided : 컴파일 시에 필요. JDBC 드라이버 등이 예가 된다. 컴파일 시에는 필요하지 않지만, 실행 시에 필요한 경우
⒞ runtime : 런타임에 필요 JDBC 드라이버 등이 예가 된다. 컴파일 시에는 필요하지 않지만 실행 시에 필요한 경우
⒟ test : 테스트 코드를 컴파일 할떄 필요 테스트시 클래스 패스에 포함되며, 배포시 제외된다.
⒠ system : 명시적으로 해당 JAR를 포함하는 것이 제공되어야 한다는 것을 제외하고 provided와 유사함, artifact는 항상 사용가능하며 레파지토리에서 검색하지 않음
⒡ import (Maven 2.0.9 이후에서 적용) : 이 영역은 <dependencyManagement> 에서 pom의 의존관계에 대해서 사용되므 지정된 POM이 해당 POM의 <dependencyManagement> 영역에 있는 의존관계로 대체됨을 의미함, 이것들이 대체되기 떄문에 import영역의 의존관계들을 실질적으로 의존에 대한 제약에 대해 관여하지 않음.
예)
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${org.slf4j-version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>
<scope>test</scope>
</dependency>
*출처 : http://homo-ware.tistory.com/43,
http://egloos.zum.com/laydios/v/2789441