danidin
danidin

Reputation: 381

How to overwrite gradle task only for a specific buildType

I have a task that comes from a plugin i am using and i want to overwrite it only when compiling for debug buildType.

I tried overwriting in the debug scope:

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

but it also overridden it for the release buildType.

I also tried doing the following:

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

But it also overides it when i am executing assembleRelease.

So how can i override it only when i am running assembleDebug?

Upvotes: 1

Views: 2501

Answers (2)

danidin
danidin

Reputation: 381

This what worked best eventually:

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

    task newRelicDeinstrumentTask(overwrite: true) << {
    }
  }

Upvotes: 1

lance-java
lance-java

Reputation: 28081

Something like:

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

See TaskExecutionGraph

Upvotes: 1

Related Questions