gradle - 如何在Gradle 5中动态执行任务?

标签 gradle build.gradle gradlew

在gradle 5中,删除了execute()方法。迁移gradle 4任务的最快方法是什么。我无法使用dependsOn,因为执行是基于动态的,例如环境名称或其他条件:

task clearData() {
    doLast {
        if ( environmentName in nonProductionEnvironments ) {
            clearTask1.execute()
            clearTask2.execute()
        } else {
            throw new GradleException("Not allowed to clear data in this environment.")
        }
    }
}

最佳答案

我不熟悉任务中的execute方法,但是如果它必须是动态的,那么我建议您在某个地方添加一个侦听器,具体取决于您要对之使用react。

有:

  • 构建监听器:https://docs.gradle.org/current/javadoc/org/gradle/BuildListener.html
  • 任务侦听器:https://docs.gradle.org/current/javadoc/org/gradle/api/execution/TaskExecutionGraph.html

  • 还有更多,但我相信其中之一可能会解决您的问题。由于dependsOn对您不起作用,因此作为Task尝试执行的任何工作听起来都不是正确的方法。

    关于gradle - 如何在Gradle 5中动态执行任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60258822/

    相关文章:

    java - Spotless gradle 插件无法在封闭系统上工作

    java - Gradle:如何在用户定义的任务中运行构建?

    java - 如何使用Proguard将测试类从生产版本中排除?

    java - Gradle eclipse 任务没有添加适当的 gradle 性质

    java - Android 版本冲突gradle

    gradle - 如何在 gradle build 期间只构建一些项目

    android - 如何编写成功构建后确实提交当前分支的gradle脚本

    java - Gradle Wrapper 将运行时参数包装在构建调用中

    gradle - 找不到ID的快照:gradle

    Android studio (Gradle) 不创建签名的 apk