Java Surefire classpathDependencyExclude的渐变等效项
我正在尝试将java项目从maven迁移到gradle。现在的问题是测试的类路径依赖配置非常棘手 我们的maven surefire插件配置:Java Surefire classpathDependencyExclude的渐变等效项,java,maven,gradle,build,maven-surefire-plugin,Java,Maven,Gradle,Build,Maven Surefire Plugin,我正在尝试将java项目从maven迁移到gradle。现在的问题是测试的类路径依赖配置非常棘手 我们的maven surefire插件配置: <includes> <include>**/SomeTest1.java</include> </includes> <classpathDependencyExcludes> <classpathDependencyExclude>com.sun.jer
<includes>
<include>**/SomeTest1.java</include>
</includes>
<classpathDependencyExcludes>
<classpathDependencyExclude>com.sun.jersey:jersey-core</classpathDependencyExclude>
</classpathDependencyExcludes>
**/SomeTest1.java
泽西岛:泽西岛核心
不同的测试类有不同的类路径。如何使用Gradle实现它?使用下一个解决方法:
像这样首先,您需要将测试源区分为不同的源集。比方说,我们需要从包org.foo.test.rest运行测试,与其他测试相比,运行时类路径稍有不同。因此,它的执行将转到其他测试,其中剩余的测试位于测试:
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'
}
}
}
configurations {
testRuntime {
exclude group: 'org.conflicting.library'
}
}
task otherTest(type: Test) {
testClassesDir = sourceSets.otherTest.output.classesDir
classpath += sourceSets.otherTest.runtimeClasspath
}
check.dependsOn otherTest
之后,您应该确保otherTest正确设置了所有必需的编译和运行时类路径:
otherTestCompile sourceSets.main.output
otherTestCompile configurations.testCompile
otherTestCompile sourceSets.test.output
otherTestRuntime configurations.testRuntime + configurations.testCompile
最后一件事是从测试中排除(或包括)不需要的运行时捆绑包:
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'
}
}
}
configurations {
testRuntime {
exclude group: 'org.conflicting.library'
}
}
task otherTest(type: Test) {
testClassesDir = sourceSets.otherTest.output.classesDir
classpath += sourceSets.otherTest.runtimeClasspath
}
check.dependsOn otherTest
并为其他测试创建测试梯度任务:
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'
}
}
}
configurations {
testRuntime {
exclude group: 'org.conflicting.library'
}
}
task otherTest(type: Test) {
testClassesDir = sourceSets.otherTest.output.classesDir
classpath += sourceSets.otherTest.runtimeClasspath
}
check.dependsOn otherTest
我这样做了,但在项目上找不到参数[主类]的otherTestCompile()方法。有什么想法吗?