默认类路径
Surefire 插件按以下顺序构建测试类路径:
其他类路径元素
如果您需要在 Surefire 执行时在类路径中添加更多内容(例如一些时髦的资源或特定于容器的 JAR),我们通常建议您将其作为依赖项添加到类路径中。考虑将共享 JAR 部署到您组织的私有远程存储库。
但是,如果必须,您可以使用该additionalClasspathElements
元素将自定义资源/JAR 添加到您的类路径中。这将被视为绝对文件系统路径,因此您可能需要使用 ${basedir} 或其他结合相对路径的属性。请注意,附加的类路径元素被添加到类路径的末尾,因此您不能使用这些元素来覆盖项目依赖项或资源。
<project> [...] <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.0.0-M5</version> <configuration> <additionalClasspathElements> <additionalClasspathElement>path/to/additional/resources</additionalClasspathElement> <additionalClasspathElement>path/to/additional/jar</additionalClasspathElement> <additionalClasspathElement>path/to/csv/jar1, path/to/csv/jar2</additionalClasspathElement> </additionalClasspathElements> </configuration> </plugin> </plugins> </build> [...] </project>
删除依赖类路径元素
classpathDependencyExcludes
可以使用参数和来从测试类路径中删除依赖项classpathDependencyScopeExclude
。通过指定要删除的 ,可以从类路径中删除特定依赖项的列表groupId:artifactId
。
<project> [...] <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.0.0-M5</version> <configuration> <classpathDependencyExcludes> <classpathDependencyExclude>org.apache.commons:commons-email</classpathDependencyExclude> </classpathDependencyExcludes> </configuration> </plugin> </plugins> </build> [...] </project>
特定范围内的依赖关系可以使用classpathDependencyScopeExclude
. 依赖范围排除的有效值由 定义org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter
。
- compile - 系统,提供,编译
- 运行时- 编译,运行时
- 测试- 系统、提供、编译、运行时、测试
<project> [...] <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.0.0-M5</version> <configuration> <classpathDependencyScopeExclude>runtime</classpathDependencyScopeExclude> </configuration> </plugin> </plugins> </build> [...] </project>