Chiaramente non capisco cosa sta succedendo qui.Cercando di capire le proprietà del progetto gradle
Suppongo che non sia possibile accedere a prop2 e prop3 perché sono variabili anziché "proprietà del progetto".
La domanda è nata perché vorrei che le variabili prop2 e prop3 fossero visibili all'interno del metodo "doTheThing()", ma non voglio doverle passare. Voglio che le variabili siano accessibili a livello globale a compiti, metodi e classi (ma solo all'interno dello script di compilazione stesso) - e voglio che vengano digitati (ecco perché la definizione di prop1 non è accettabile).
In realtà, tuttavia, credo che ciò che sto chiedendo sia un po 'di aiuto per capire che cosa sia una proprietà del progetto Gradle e quale sia la sintassi "prop1 =" blah "" in realtà.
Ho letto la guida utente Gradle e anche Gradle in Action - se già spiegano questo concetto, per piacere indicatemi la sezione giusta (forse l'ho sorvolato al momento non capendo cosa stia dicendo).
prop1 = "blah"
String prop2 = "bleah"
def prop3 = "blargh"
task testPropAccess << {
println "1: $prop1"
println "2: $prop2"
println "3: $prop3"
doTheThing()
}
private void doTheThing(){
println "4: $prop1"
println "5: $prop2" // error: Could not find property 'prop2' on root project 'script'
println "6: $prop3" // error: Could not find property 'prop3' on root project 'script'
}
Questo dovrebbe anche aiutare: http://groovy.codehaus.org/Scoping+and+the+Semantics+of+%22def%22 – rodion
@Rodion - quel collegamento è stato molto utile, grazie. Credo di aver bisogno di fare qualche altra ricerca orientata Groovy. – Shorn
Per chi cerca di fare qualcosa di simile, la mia soluzione attuale per ottenere la funzionalità che voglio è definire le mie proprietà build-script wide in una classe come questa: 'class StaticProps { static String prop4 = System.getProperty (" prop4 " , "ciccio") } ' E poi li usano come questo: System.getProperty ("prop4"', StaticProps.prop4) '' Perché – Shorn