Gradle 相当于 Surefire classpathDependencyExclude
Gradle equivalent of Surefire classpathDependencyExclude
我正在尝试将 java 项目从 Maven 迁移到 gradle。问题是现在测试的类路径依赖配置非常棘手。
我们的 maven-surefire-plugin 配置:
<includes>
<include>**/SomeTest1.java</include>
</includes>
<classpathDependencyExcludes>
<classpathDependencyExclude>com.sun.jersey:jersey-core</classpathDependencyExclude>
</classpathDependencyExcludes>
不同的测试有不同的类路径类。我如何用 Gradle 实现它?
使用下一个解决方法:
- 为需要的测试创建源集
- 为创建的sourceSet添加配置
- 使用自定义配置为 运行 测试添加任务
- 配置测试任务依赖自定义测试任务
- 配置报告插件以生成漂亮的html报告:)
首先,您需要将测试源分成不同的源集。比如说,我们需要 org.foo.test.rest 包中的 运行 测试,与其他测试相比,运行time classpath 稍有不同。因此,它的执行将转到 otherTest,其中剩余测试在 test:
sourceSets {
otherTest {
java {
srcDir 'src/test/java'
include 'org/foo/test/rest/**'
}
resources {
srcDir 'src/test/java'
}
}
test {
java {
srcDir 'src/test/java'
exclude 'org/foo/rest/test/**'
}
resources {
srcDir 'src/test/java'
}
}
}
之后,您应该确保 otherTest 已正确设置所有必需的编译和 运行time 类路径:
otherTestCompile sourceSets.main.output
otherTestCompile configurations.testCompile
otherTestCompile sourceSets.test.output
otherTestRuntime configurations.testRuntime + configurations.testCompile
最后一件事是从 test 中排除(或包括)不需要的 运行time bundles:
configurations {
testRuntime {
exclude group: 'org.conflicting.library'
}
}
并为 otherTest 创建测试 Gradle 任务:
task otherTest(type: Test) {
testClassesDir = sourceSets.otherTest.output.classesDir
classpath += sourceSets.otherTest.runtimeClasspath
}
check.dependsOn otherTest
我正在尝试将 java 项目从 Maven 迁移到 gradle。问题是现在测试的类路径依赖配置非常棘手。
我们的 maven-surefire-plugin 配置:
<includes>
<include>**/SomeTest1.java</include>
</includes>
<classpathDependencyExcludes>
<classpathDependencyExclude>com.sun.jersey:jersey-core</classpathDependencyExclude>
</classpathDependencyExcludes>
不同的测试有不同的类路径类。我如何用 Gradle 实现它?
使用下一个解决方法:
- 为需要的测试创建源集
- 为创建的sourceSet添加配置
- 使用自定义配置为 运行 测试添加任务
- 配置测试任务依赖自定义测试任务
- 配置报告插件以生成漂亮的html报告:)
首先,您需要将测试源分成不同的源集。比如说,我们需要 org.foo.test.rest 包中的 运行 测试,与其他测试相比,运行time classpath 稍有不同。因此,它的执行将转到 otherTest,其中剩余测试在 test:
sourceSets {
otherTest {
java {
srcDir 'src/test/java'
include 'org/foo/test/rest/**'
}
resources {
srcDir 'src/test/java'
}
}
test {
java {
srcDir 'src/test/java'
exclude 'org/foo/rest/test/**'
}
resources {
srcDir 'src/test/java'
}
}
}
之后,您应该确保 otherTest 已正确设置所有必需的编译和 运行time 类路径:
otherTestCompile sourceSets.main.output
otherTestCompile configurations.testCompile
otherTestCompile sourceSets.test.output
otherTestRuntime configurations.testRuntime + configurations.testCompile
最后一件事是从 test 中排除(或包括)不需要的 运行time bundles:
configurations {
testRuntime {
exclude group: 'org.conflicting.library'
}
}
并为 otherTest 创建测试 Gradle 任务:
task otherTest(type: Test) {
testClassesDir = sourceSets.otherTest.output.classesDir
classpath += sourceSets.otherTest.runtimeClasspath
}
check.dependsOn otherTest