Avere un estratto https://github.com/gradle/gradle/blob/master/build.gradle:Configurazione personalizzata condizionale per il progetto Gradle
ext {
isDevBuild = {
gradle.taskGraph.hasTask(developerBuild)
}
}
task developerBuild {
description = 'Builds distributions and runs pre-checkin checks'
group = 'build'
dependsOn testedDists
}
Quando ho usato questo metodo per creare configurazione personalizzata nel mio progetto ho scoperto che:
isDevBuild === true
cioè è sempre vero perché task 'developerBuild' è all'interno del mio progetto build.gradle, e quindi nel grafico. Hanno un paio di configurazioni "diverse" (isCIBuild, isCommitBuild, isFinalReleaseBuild, ...) quindi suppongo di avere qualcosa di sbagliato qui.
Qualcuno può spiegare come rendere condizionale questa configurazione in base a qualche parametro esterno?
Tornando all'asserzione dal libro "Building and Testing with Gradle": la conoscenza di Groovy non è completa: è un must iniziare a lavorare con Gradle. Grazie per l'aiuto. Verificherò più tardi oggi. –
Non direi che è necessario per iniziare, ma è necessario implementare soluzioni avanzate come questa. (Un'alternativa semplice che richiede meno conoscenza di Groovy è quella di passare da una configurazione all'altra in base a una proprietà di sistema.) Di nuovo, molto di questo codice potrebbe essere scritto in stile Java (con classi interne anonime e simili), o letteralmente in Java se si spostato in un plug-in. La vera sfida in questo caso particolare è capire il lato gradle delle cose: l'API del grafico delle attività, la fase di configurazione e di esecuzione, ecc. –
La tua soluzione funziona bene. Molte grazie. Per la nota che hai inserito in P.S. : Non posso chiamare direttamente 'isDevBuild()' quando eseguo Gradle build con 'ciBuild jar' per esempio (e non posso usare entrambe le configurazioni nello stesso tempo) - anche se hai dimostrato che posso chiamare la chiusura solo per scopi didattici. –