跳过gradle中的任务,但仅当任务存在时

时间:2020-03-10 10:50:20

标签: gradle

我有一个复杂的多子项目gradle项目,里面有一个小kotlin多平台和一个fex自定义gradle插件。

我的问题是,当我想跳过某些任务(主要是测试)来运行构建时,并非所有项目都具有相同的测试任务名称:对于某些名称,它称为jsTest,对于其他nodeJsTest,对于其他jvmTest。

因此,当我致电gradle build -x jsTest -x nodeJsTest时,我遇到了错误,因为有时某些要跳过的任务不存在。

如何跳过该任务,并忽略它(如果不存在)?

2 个答案:

答案 0 :(得分:0)

您可以修改Gradle文件以执行类似(Kotlin DSL)的操作:

tasks.named("build") {
    dependsOn.removeIf { it.toString().contains("flakyTest") }
}

否则,您将需要通过执行./gradlew myTask anotherTask anotherOne andAnotherOne或创建一个dependsOn您想要的所有任务的任务来将任务聚合到所需的对象。

答案 1 :(得分:0)

您可以在中间构建触发器task testType中创建通用测试任务task testType,然后触发jsTest或任何相关的测试,而不是使测试任务直接依赖于构建,您在该模块中创建的任务。
现在,您可以安全地运行gradle build -x testType

例如(在您的.gradle文件中):

task jsTest { ... }
task testType { dependsOn jsTest }
build.finalizedBy(testType)

对其余测试任务文件执行相同的操作,如果您想使解决方案更简洁,也可以全局创建task testType

相关问题