Najwyraźniej nie rozumiem, co się tutaj dzieje.Próba zrozumienia różnorakich właściwości projektu
Domyślam się, że prop2 i prop3 nie mogą być dostępne, ponieważ są zmiennymi zamiast "właściwościami projektu".
Pojawiło się pytanie, ponieważ chciałbym, aby zmienne prop2 i prop3 były widoczne z poziomu metody "doTheThing()", ale nie chcę ich przekazywać. Chcę, aby zmienne były globalnie dostępne do zadań, metod i klas (ale tylko z wewnątrz samego skryptu budowania) - i chcę, żeby były pisane na maszynie (dlatego nie można zaakceptować definicji prop1).
Naprawdę, myślę, że to o co proszę, to pomoc w zrozumieniu, czym jest własność projektu Gradle i co właściwie robi składnia "prop1 =" bla ".
Przeczytałem podręcznik użytkownika Gradle, a także Gradle w działaniu - jeśli już wyjaśniono tę koncepcję, proszę wskazać mi właściwą sekcję (może pomalowałem ją w tym czasie, nie rozumiejąc, co to było).
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'
}
Powinno to również pomóc: http://groovy.codehaus.org/Scoping+i+memantyki+%22def%22 – rodion
@Rodion - ten link był bardzo przydatny, dziękuję. Chyba muszę zrobić więcej badań zorientowanych na Groovy. – Shorn
Dla każdego, kto chciałby zrobić podobne, moim bieżącym sposobem obejścia tego problemu jest zdefiniowanie szerokich właściwości skryptu budującego w klasie takiej jak ta: 'class StaticProps { static String prop4 = System.getProperty (" prop4 " "wibble") } ' a następnie wykorzystać je w ten sposób: ' System.getProperty ("prop4" StaticProps.prop4) '' Dlaczego – Shorn