我好像有点鸡蛋问题.我有Gradle用Java
插件定义的测试任务.我将JUnit类别设置为使用属性运行.我的团队已表示对将在特定类别中运行任务而不必使用-P在命令行上设置属性的任务感兴趣.
我无法想出一种方法来解决这个问题,因为新test
任务只有在执行任务时才需要配置任务.由于要运行的类别需要是测试任务的输入参数,以确保UP-TO-DATE检查功能正常,因此需要在配置阶段设置它们,并且不能等待执行阶段.
有谁知道如何进行像这样的设置?也许我正在从错误的角度接近它.
编辑1
当前的build.gradle
apply plugin: 'java'
def defaultCategory = 'checkin'
test {
def category = (project.hasProperty('category') ? project['category'] : defaultCategory)
inputs.property('category', category)
useJUnit()
options {
includeCategories category
}
}
Run Code Online (Sandbox Code Playgroud)
我想要什么,但不起作用:
apply plugin: 'java'
def defaultCategory = 'checkin'
test {
def category = (project.hasProperty('category') ? project['category'] : defaultCategory)
inputs.property('category', category)
useJUnit()
options {
includeCategories category
}
}
task nightly(dependsOn: 'build') {
defaultCategory = 'nightly'
}
task weekly(dependsOn: 'build') {
defaultCategory = 'weekly'
}
Run Code Online (Sandbox Code Playgroud)
由于两个任务都是配置的,无论它们是否会运行,它们都变得无用.我无法在执行阶段之前推迟设置defaultCategory值,因为需要配置任务的任务输入test
值,并且因为该值需要能够运行在test
任务之前运行的build
任务.
我不知道我是否称这种解决方案优雅,但事实证明它是有效的:
task nightly(dependsOn: 'build')
test {
useJUnit()
gradle.taskGraph.whenReady {
if (gradle.taskGraph.hasTask(":${project.name}:nightly")) {
options {
includeCategories 'nightly'
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1876 次 |
最近记录: |