查看文档http://maven.apache.org/surefire/maven-surefire-plugin/examples/testng.html,我们可以在<dependency>
下看到<scope>
标记
这是什么?我们如何使用它来运行测试?
查看文档http://maven.apache.org/surefire/maven-surefire-plugin/examples/testng.html,我们可以在<dependency>
下看到<scope>
标记
这是什么?我们如何使用它来运行测试?
4条答案
按热度按时间1rhkuytd1#
<scope>
元素可以取6个值:* 编译 、 提供 、 运行时 、 测试 、 系统 * 和 * 导入 *。此范围用于限制依赖项的可传递性,并且还影响用于各种生成任务的类路径。
编译
这是默认作用域,在未指定时使用。编译依赖关系在项目的所有类路径中可用。此外,这些依赖关系将传播到依赖项目。
前提是
这与compile非常相似,但表示您希望JDK或容器在运行时提供相关性。例如,为Java Enterprise Edition构建Web应用程序时,可以将Servlet API和相关Java EE API的相关性设置为提供的范围,因为Web容器提供这些类。此范围仅在编译和测试类路径上可用,并且不可传递。
运行时
此范围指示编译不需要依赖项,但执行需要依赖项。它位于运行时和测试类路径中,但不在编译类路径中。
测试
此范围指示应用程序的正常使用不需要依赖项,仅在测试编译和执行阶段可用。
系统
此范围类似于provided,只是您必须提供显式包含它的JAR。该工件始终可用,并且不会在存储库中查找。
导入(仅在Maven 2.0.9或更高版本中可用)
此作用域仅用于节中类型为pom的依赖项。它表示指定的POM应替换为该POM节中的依赖项。因为它们被替换,所以具有导入作用域的依赖项实际上不参与限制依赖项的传递性。
回答你问题的第二部分:
我们如何使用它来运行测试?
注意,
test
作用域只允许在测试阶段使用依赖项。阅读文档了解完整详细信息。
3phpmpom2#
六个依赖项作用域:
*编译:默认范围,类路径可用于
src/main
和src/test
*测试:类路径可用于
src/test
*前提是:与compie类似,但由JDK或容器在运行时提供
*运行时间:编译时不需要,仅在运行时需要
*system:本地提供的类路径
*import:只能导入其他POM到
<dependencyManagement/>
中,只有Maven 2.0.9以上版本才有,改变父代并不总是可行的,很多项目已经指定了父代项目来管理自己的组织标准,dependencyManagement
允许我们添加父代项目而不创建父代,类似于多重继承。iezvtpos3#
作用域标记通常用于在类路径级别限制jar的可传递依赖项和可用性。如果我们不提供任何作用域,则默认作用域将起作用,即编译。
编译表示您需要JAR来编译和运行应用程序。例如,对于Web应用程序,JAR将放置在
WEB-INF/lib
目录中。提供表示您需要JAR来编译,但在运行时环境已提供JAR,因此您不需要将其与应用程序打包在一起。对于Web应用程序,这意味着JAR文件将不会被放置到WEB-INF/lib
目录中。2对于Web应用,如果应用服务器已经提供了JAR(或其功能),则使用“provided”,否则使用“compile”。62o28rlo4#
.pom
dependency
scope
可以包含:compile
-在编译时和运行时可用provided
-编译时可用。(此依赖关系应由外部容器(如OS...)提供)runtime
-在运行时可用test
-测试编译和运行时system
-类似于provided
,但将<systemPath>path/some.jar</systemPath>
暴露到.jar
上的点import
-可从Maven v2.0.9获得,用于<type>pom</type>
,应将其替换为来自此文件<dependencyManagement/>
的有效依赖项