Znalazłem rozwiązanie, ale do tej pory nie jest ono najlepsze. Więc nie jestem już pewien, że to, co chciałem zrobić na początku, jest możliwe. Ocena pliku gradle i wybór odpowiedniego smaku i typu kompilacji jest w różnych fazach kompilacji gradle, więc to, co zrobiłem:
Używam parametru budowania z wiersza poleceń. Kiedy ten czynnik jest prawdziwy, stosuję wtyczkę, nawet jeśli jej tam nie ma, również ją stosuję (dla kompilacji IDE). Używam Jenkinsa, więc mógłbym napisać ten parametr w zadaniu kompilacji.
plik 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")
}
}
I trzeba uruchomić Gradle zbudowany przez to:
assembleYourApp -PcompileNewRelic=true
To nie działa dla mnie na dzień dzisiejszy. Wygląda na to, że parser 'build.gradle' szuka instrukcji' apply' zanim jeszcze oceni projekt, tym samym unieważniając sprawdzenia "if". – Sebastiano