明らかに私はここで何が起こっているのか分かりません。gradleプロジェクトのプロパティを理解しようとしています
prop2とprop3は「プロジェクトプロパティ」ではなく変数なのでアクセスできないようです。
変数「prop2」と「prop3」を「doTheThing()」メソッド内から見ることができますが、それらを渡す必要はありません。なぜなら、変数をグローバルにアクセス可能にしたいのですメソッド、クラス(ビルドスクリプト自体の内部からのみ)に渡すことができます。そして、それらを型付けしたい(これはprop1の定義が受け入れられない理由です)。
本当に、私は、Gradleプロジェクトのプロパティが何であり、 'prop1 = "blah"という構文が実際に何をしているかを理解するのに役立つと思います。
私はGradleユーザーガイドとGradle in Actionも読んでいます。彼らがすでにこのコンセプトを説明していれば、私は正しいセクションを指摘してください(何か言っていることを理解していないときに、
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'
}
http://groovy.codehaus.org/Scoping+and+the+Semantics+of+%22def%22 – rodion
@Rodion - そのリンクはとても役に立ちました。ありがとうございました。 Groovy指向の研究をいくつか行う必要があると思います。 – Shorn
似たようなことをしたい人にとって、私が望む機能を得るための私の現在の回避策は、このようなクラスで私のビルドスクリプトのワイドプロパティを定義することです: 'class StaticProps { static String prop4 = System.getProperty(" prop4 " 、このようにそれらを使用した後) } ' "wibble" そして: 'はSystem.getProperty( "prop4"、StaticProps.prop4) ' – Shorn