我有一个复杂的多子项目gradle项目,里面有一个小kotlin多平台和一个fex自定义gradle插件。
我的问题是,当我想跳过某些任务(主要是测试)来运行构建时,并非所有项目都具有相同的测试任务名称:对于某些名称,它称为jsTest,对于其他nodeJsTest,对于其他jvmTest。>
因此,当我致电gradle build -x jsTest -x nodeJsTest
时,我遇到了错误,因为有时某些要跳过的任务不存在。
如何跳过该任务,并忽略它(如果不存在)?
答案 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
。