2016-11-17 57 views
1

我有一个来自我正在使用的插件的任务,我只想在为debug buildType编译时才覆盖它。如何为特定的buildType覆盖gradle任务

我试着在调试范围覆盖:

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) << {} 
    } 
    } 

但它也它会取代,当我执行assembleRelease。

那么,如何才能重写它,只有当我运行assembleDebug?

回答

0

这什么工作最好的最后:

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

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

喜欢的东西:

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

TaskExecutionGraph