如何以编程方式排除生成的Gradle任务?

1u4esq0p  于 2023-03-08  发布在  其他
关注(0)|答案(1)|浏览(119)

任务task0依赖于由规则生成的task1
一个build.gradle,带有:

project.task0.dependsOn -= task1

失败,因为尚未生成task1
使用gradle.taskGraph.whenReady也不起作用,因为修改任务图已经太晚了(尽管这可以用来禁用任务)。
如何从任务的相关性中删除生成的任务?

bt1cpqcv

bt1cpqcv1#

你也许可以这样做:

project.gradle.projectsEvaluated {
    tasks.task0.dependsOn -= "task1"
}

或:

project.gradle.projectsEvaluated {
    tasks.task0.dependsOn -= tasks.task1
}

或者简单地说:

project.gradle.projectsEvaluated {
    tasks.task0.dependsOn = []
}

我发现在更改之前/之后输出依赖项很有帮助,可以确保它达到预期的效果:

project.gradle.projectsEvaluated {
    tasks.xyz.dependsOn.forEach {
        println("before: " + it + " (type " + it.getClass() + ")")
    }
    // modify tasks.xyz.dependsOn in some way
    tasks.xyz.dependsOn.forEach {
        println("after: " + it + " (type " + it.getClass() + ")")
    }
}

相关问题