如何仅为特定的buildType覆盖gradle任务



我有一个来自我正在使用的插件的任务,我想只在编译调试buildType时覆盖它。

我尝试在调试范围内覆盖:

buildTypes {
    debug {
      task newRelicInstrumentTask(overwrite: true) << {}
      task newRelicDeinstrumentTask(overwrite: true) << {}
    }
}

,但它也覆盖了它的版本buildType。

我还尝试了以下操作:

buildTypes.all{ theBuildType ->
    print(theBuildType.name)
    if (theBuildType.name == "debug")
    {
      task newRelicInstrumentTask(overwrite: true) << {}
      task newRelicDeinstrumentTask(overwrite: true) << {}
    }
  }

但是当我执行assemblerrelease时,它也会覆盖它。

所以我怎么能覆盖它只有当我运行assembleDebug?

类似于

gradle.taskGraph.whenReady { TaskExecutionGraph teg ->
    if (teg.hasTask('assembleDebug')) {
        tasks.getByPath('newRelicInstrumentTask').enabled = false
        tasks.getByPath('newRelicDeinstrumentTask').enabled = false
    }
}

看到TaskExecutionGraph

这是最终效果最好的:

if ((gradle.startParameter.taskNames.size() == 1) && (gradle.startParameter.taskNames.get(0).contains(
      "assembleDebug"))) {
    task newRelicInstrumentTask(overwrite: true) << {
    }
    task newRelicDeinstrumentTask(overwrite: true) << {
    }
  }

最新更新