我已将我的源集定义为
sourceSets {
// Configuring SourceSets for all connector source files.
main {
java {
srcDirs = ['src']
}
}
test {
// integrationTests
}
unitTests {
//unitTests
}
}
test {
// integrationTests
}
task('unitTest', type: Test) {
//unitTests
}
当我开始的时候 ./gradlew build
是的 check
任务基本上调用 test
目标。
我可以覆盖默认值吗 gradle build
要调用的任务“检查”机制 unitTest
在这里而不是 test
?
1条答案
按热度按时间qltillow1#
首先,请考虑使用任务
test
对于单元测试和使用另一个源集进行集成测试。gradle及其插件遵循一种称为convention over configuration的方法,java插件的约定是使用任务test
用于单元测试。要真正回答您的问题,您可以使用访问和修改每个任务的依赖项
getDependsOn()
以及setDependsOn(Iterable<?>)
,因此您的问题的简单解决方案可以是以下代码:这将从任务中删除所有任务依赖项
check
然后添加对任务的依赖关系unitTest
. 但是,这可能会导致新的问题,因为其他插件可能会自动注册的任务依赖项check
这也将被删除。对上面代码的一个明显的改进就是删除对
test
而不是所有任务依赖项。可悲的是,这并不像人们想象的那么简单。你可能已经注意到getDependsOn()
返回一个Set<Object>
而不是一个Set<Task>
. 为了方便起见,任务依赖性不仅可以使用任务来表示,还可以通过传递稍后将解析为任务的其他对象(例如,包含任务名称的字符串)来表示。当前版本的java插件使用Provider<Task>
注册任务之间的依赖关系check
任务呢test
. 删除对任务的依赖test
,则需要迭代中的所有依赖项dependsOn
找一个有这种类型的Provider
返回任务test
通过itsget()
方法。你就可以把它去掉Provider
从dependsOn
.正如您所看到的,一旦任务依赖项被注册,就可以删除它们,但是这并不是那么容易,所以您应该遵循约定并使用任务
test
用于单元测试。