Claramente, no entiendo lo que está sucediendo aquí.Intentando comprender las propiedades del proyecto de gradle
Supongo que no se puede acceder a prop2 y prop3 porque son variables en lugar de "propiedades del proyecto".
La pregunta surgió porque me gustaría que las variables prop2 y prop3 fueran visibles desde el método "doTheThing()", pero no quiero tener que pasarlas. Quiero que las variables sean accesibles globalmente a tareas, métodos y clases (pero solo desde adentro en el script de compilación) - y quiero que sean tipeados (por eso la definición de prop1 no es aceptable).
Realmente, supongo que lo que estoy pidiendo es algo de ayuda para entender qué es una propiedad de proyecto de Gradle y qué es realmente la sintaxis 'prop1 = "blah' '.
He leído la guía de usuario de Gradle y también Gradle en acción: si ya explican este concepto, diríjanme a la sección correcta (tal vez lo pasé por alto en ese momento sin entender lo que estaba diciendo).
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'
}
Esto también debería ayudar: http://groovy.codehaus.org/Scoping+and+the+Semantics+of+%22def%22 – rodion
@Rodion - ese enlace fue bastante útil, gracias. Supongo que necesito hacer algo más de investigación orientada a Groovy. – Shorn
Para cualquiera que quiera hacer algo similar, mi solución actual para obtener la funcionalidad que quiero es definir mis propiedades amplias de construcción-script en una clase como esta: 'class StaticProps { static String prop4 = System.getProperty (" prop4 " "wibble") } ' Y luego usarlos como esto: System.getProperty ("prop4"', StaticProps.prop4) '' ¿Por qué – Shorn