Ho trovato una soluzione, ma non è la migliore finora. Quindi non ne sono più sicuro, quello che volevo fare inizialmente è possibile. La valutazione del file gradle e la scelta del giusto sapore e tipo di build si trovano in diverse fasi della build del gradle, quindi quello che ho fatto è:
Uso un parametro di build dalla riga di comando. Quando quel paramerer è vero, applico il plugin, quando non è nemmeno lì, lo applico anche (per build IDE). Io uso Jenkins, quindi potrei scrivere quel parametro nel lavoro di costruzione.
file di build.gradle:
// First we have to attach a task to the project, which will be running first
gradle.projectsEvaluated {
preBuild.dependsOn(applyNewRelicByProperty)
}
// Then check on the parameter, which comes from the command line
task applyNewRelicByProperty {
if(!project.hasProperty('compileNewRelic')) {
// NewRelic on: 'compileNewRelic' property not set, so running from IDE.
apply plugin: 'newrelic'
} else if(project.hasProperty('compileNewRelic') && project.getProperties().get('compileNewRelic').equals('true')) {
// NewRelic on: 'compileNewRelic' property is set and it is 'true'.
apply plugin: 'newrelic'
} else {
// NewRelic off
println("No NewRelic")
}
}
E si deve eseguire la compilazione Gradle da questo:
assembleYourApp -PcompileNewRelic=true
Questo non funziona per me come di oggi. Apparentemente, il parser 'build.gradle' cerca le istruzioni' apply' prima ancora di valutare il progetto, annullando quindi i controlli 'if'. – Sebastiano