Ammetto che sono abbastanza nuovo da gradle ma non mi aspettavo di non riuscire a capire qualcosa di semplice come nell'esempio seguente. Posso leggere la documentazione di gradle sul controllo se una proprietà del progetto è stata impostata o meno usando una chiamata hasProperty (String propertyName) e sono seduto qui e non ho idea del motivo per cui qualcosa di così fondamentale non funzioni.Passare le proprietà a una build gradle
Credo che la mia mente deve essere molto "ant tipo" oriented che di sicuro mi manca qualcosa normale di base
task printSystem() << {
println system
println "has property: " + hasProperty("system")
}
e il ricorso a tale compito con il seguente comando:
$gradle printSystem -Psystem=mySystem
mySystem
has property: null
Così le mie domande sarebbero:
- Perché il sistema è stampato ma restituisce Proprietà
null
? - Come si verifica l'esistenza della proprietà del progetto denominata "sistema"?
- Esiste un modo diverso per testare una proprietà di progetto in contrasto con una proprietà di sistema?
- Come si passa una proprietà di sistema dalla riga di comando?
Questo è da, la documentazione Gradle e credo che sto leggendo bene
19.2.1. Verifica delle proprietà del progetto
È possibile accedere a una proprietà di progetto nello script di build semplicemente utilizzando il suo nome come si farebbe con una variabile. Se questa proprietà non esiste, verrà generata un'eccezione e la generazione fallirà. Se lo script di build si basa su proprietà opzionali che l'utente potrebbe impostare, magari in un file gradle.properties, è necessario verificare l'esistenza prima di accedervi. È possibile farlo utilizzando il metodo hasProperty ('propertyName') che restituisce true o false.
Hai visto la mia risposta? Risolve il problema? Se è così, per favore accettalo. – Opal
La tua risposta è arrivata il venerdì pomeriggio mentre mi stavo godendo un drink di fine settimana con i miei colleghi di lavoro :-) Ho testato la tua soluzione oggi e ha funzionato. Desideravo che la documentazione fosse più chiara dicendole semplicemente "progetto".hasProperty ('propertyName') 'al contrario di ciò che mostra ora. Inoltre, quando qualcosa deve restituire true o false e restituisce un valore null, aggiunge la confusione. Grazie mille. – Julian