查看文档http://maven.apache.org/surefire/maven-surefire-plugin/examples/testng.html,我们可以看到<scope>
下的<dependency>
标记
这是什么以及我们如何使用它来运行测试?
答案 0 :(得分:220)
<scope>
元素可以包含6个值:编译,提供,运行时,测试 ,系统和导入。
此范围用于限制依赖项的传递性,还用于影响用于各种构建任务的类路径。
<强>编译强>
这是默认范围,如果未指定,则使用此范围。编译依赖项在项目的所有类路径中都可用。此外,这些依赖项将传播到依赖项目。
<强>提供强>
这很像compile,但表示您希望JDK或容器在运行时提供依赖项。例如,在为Java Enterprise Edition构建Web应用程序时,您可以将Servlet API和相关Java EE API的依赖关系设置为提供的范围,因为Web容器提供了这些类。此范围仅在编译和测试类路径中可用,并且不可传递。
<强>运行时强>
此范围表示编译不需要依赖项,但是用于执行。它位于运行时和测试类路径中,但不是编译类路径。
<强>测试强>
此范围表示正常使用应用程序不需要依赖关系,并且仅适用于测试编译和执行阶段。
<强>系统强>
此范围与提供的类似,只是您必须提供明确包含它的JAR。工件始终可用,不会在存储库中查找。
导入(仅适用于Maven 2.0.9或更高版本)
此范围仅用于部分中pom类型的依赖项。它表示应该用该POM部分中的依赖项替换指定的POM。由于它们被替换,具有导入范围的依赖性实际上并不参与限制依赖的传递性。
回答问题的第二部分:
我们如何使用它来运行测试?
请注意,test
范围仅允许在测试阶段使用依赖关系。
阅读documentation了解详情。
答案 1 :(得分:8)
单行六个依赖范围:
答案 2 :(得分:7)
答案 3 :(得分:3)
范围标记始终用于限制类路径级别的jar的传递依赖性和可用性。如果我们不提供任何范围,则默认范围将起作用,即编译。
答案 4 :(得分:0)
如果我们不提供任何范围,那么默认范围是编译,如果你想确认,只需转到eclipse编辑器中的Effective pom选项卡,它会显示为编译。
答案 5 :(得分:0)
.pom
dependency
scope
可以包含:
compile
-在编译时和运行时可用provided
-在编译时可用。 (此依赖关系应由OS之类的外部容器提供)runtime
-在运行时可用test
-测试编译和运行时间system
-与provided
类似,但暴露systemPath
指向.jar
import
-可从Maven v2.0.9中用于<type>pom</type>
,并且应替换为该文件<dependencyManagement/>
中的有效依赖项