본문 바로가기
빌드도구/Maven

Scope 설정

by YellowCow 2023. 2. 26.

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>

 

 

* 출처: https://urakasumi.tistory.com/160

댓글