Maven에서는 pom.xml에 아래와 같이 의존성들을 추가하여 사용하는데
각 의존성에 따라, 테스트 시에만 적용할 것인지, 컴파일 시에 적용할 것인지 등 설정이 가능하다
<dependencies>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>2.1.214</version>
</dependency>
</dependencies>
설정 옵션은 아래와 같다
- compile
- default로 적용됨
- Compile 시점에 필요
- 프로젝트의 모든 Class Path에 추가됨
- runtime
- Runtime(프로젝트 실행 시점)시 해당 dependency를 사용(Ex. JDBC 드라이버)
- Runtime, test시 Class Path에 추가됨
- provided
- Compile 시점에 필요
- Runtime 시점에 JDK 혹은 컨테이너가 dependency 제공
- Wep Application 개발 시 Servlet API or Java EE API들은 provided Scope으로 지정해야한다.
(톰캣과 같은 컨테이너가 dependency를 제공해주기 때문. Ex) Servlet API)
- test
- 테스트 컴파일 및 실행 단계에서만 사용
- 배포때는 제외됨
- Ex. easymock, JUnit
- system
- provided와 유사하지만 JAR 파일을 직접 사용
- JAR 파일의 위치를 지정하는 systemPath 속성이 붙어야 함
다음은 scope를 설정한 예시이다
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.26</version>
<scope>provided</scope>
</dependency>
댓글