[maven] pom.xml의 <dependency>에서 <scope>는 무엇입니까?

http://maven.apache.org/surefire/maven-surefire-plugin/examples/testng.html 문서를 보면 <scope>아래에서 태그 를 볼 수 있습니다<dependency>

그것은 무엇이며 어떻게 테스트 실행에 사용할 수 있습니까?



답변

<scope>: 요소는 6 개 값을 취할 수 컴파일 , 제공 , 실행 , 테스트 , 시스템가져 오기를 .

이 범위는 종속성의 전이성을 제한하고 다양한 빌드 작업에 사용되는 클래스 경로에 영향을주기 위해 사용됩니다.

엮다

지정되지 않은 경우 사용되는 기본 범위입니다. 컴파일 종속성은 프로젝트의 모든 클래스 경로에서 사용할 수 있습니다. 또한 이러한 종속성은 종속 프로젝트로 전파됩니다.

제공

이것은 컴파일과 비슷하지만 JDK 또는 컨테이너가 런타임에 종속성을 제공 할 것으로 예상 함을 나타냅니다. 예를 들어, Java Enterprise Edition 용 웹 애플리케이션을 빌드 할 때 웹 컨테이너가 해당 클래스를 제공하므로 서블릿 API 및 관련 Java EE API에 대한 종속성을 제공 범위로 설정합니다. 이 범위는 컴파일 및 테스트 클래스 경로에서만 사용할 수 있으며 전이되지 않습니다.

실행 시간

이 범위는 종속성이 컴파일에 필요하지 않지만 실행에 필요함을 나타냅니다. 런타임 및 테스트 클래스 경로에 있지만 컴파일 클래스 경로에는 없습니다.

테스트

이 범위는 응용 프로그램을 정상적으로 사용하는 데 종속성이 필요하지 않으며 테스트 컴파일 및 실행 단계에서만 사용할 수 있음을 나타냅니다.

체계

이 범위는 명시 적으로 포함 된 JAR을 제공해야한다는 점을 제외하면 제공된 것과 유사합니다. 아티팩트는 항상 사용 가능하며 저장소에서 검색되지 않습니다.

가져 오기 (Maven 2.0.9 이상에서만 사용 가능)

이 범위는 섹션에서 pom 유형의 종속성에만 사용됩니다. 지정된 POM이 해당 POM 섹션의 종속성으로 대체되어야 함을 나타냅니다. 그것들이 대체되기 때문에, 수입 범위를 가진 의존성은 실제로 의존성의 전이성을 제한하는 데 참여하지 않습니다.

질문의 두 번째 부분에 대답하려면 :

테스트 실행에 어떻게 사용할 수 있습니까?

test범위에서는 테스트 단계에 대해서만 종속성을 사용할 수 있습니다.

자세한 내용은 설명서 를 읽으십시오 .


답변

설명 범위가있는 좋은 이미지 추가

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오


답변

6 가지 종속성 범위 :

  • 컴파일 : 기본 범위는, 클래스 경로가 모두 사용할 수 있습니다 src/mainsrc/test
  • 테스트 : 클래스 경로를 사용할 수 있습니다src/test
  • 제공 : 컴플리트와 유사하지만 런타임에 JDK 또는 컨테이너에서 제공
  • 런타임 : 컴파일에 필요하지 않으며 런타임 에만 필요
  • 시스템 : 클래스 경로를 로컬로 제공
  • import : 다른 POM 만로 가져올 <dependencyManagement/>수 있으며 Maven 2.0.9 이상에서만 사용 가능

답변

범위 태그는 항상 클래스 경로 레벨에서 jar의 전이 종속성 및 가용성을 제한하는 데 사용됩니다. 범위를 제공하지 않으면 기본 범위가 작동합니다 (예 : Compile) .


답변

범위를 제공하지 않으면 기본 범위는 컴파일입니다. 확인하려면 이클립스 편집기의 유효 pom 탭으로 이동하면 컴파일로 표시됩니다.


답변