このエラーメッセージで、実際にすべての権利があります。そのための方法を作るためにGroovyの構文糖の
build file '.../build.gradle': 80: Ambiguous expression could be a parameterless closure expression, an isolated open code block, or it may continue a previous statement;
solution: Add an explicit parameter list, e.g. {it -> ...}, or force it to be treated as an open block by giving it a label, e.g. L:{...}, and also either remove the previous newline, or add an explicit semicolon ';' @ line 80, column 1.
ラムダを最後のパラメータのルックライン言語構造体として使用すると、次のコードブロックが得られます。
task build {}
task build2(type: Copy) {}
は彼らより通常のフォームに等しい:
task build({})
task build(type: Copy, {})
は今、あなたは本当にそこに、それらの中括弧は、通常のコードブロックを区切る必要はありませんが、build
メソッドにパラメータとして渡されるべきGroovyのラムダ、 。
しかし、Groovyは、実際にラムダが前の行のメソッドにパラメータとして渡されているのか、無関係なコードブロックが間に改行を入れたのかを実際に判断することはできません。そしてそこにはエラーメッセージに記載されているあいまいさがあります。
最後に
task build
{ ->
}
、ダイナミックを呼び出すために使用task
キーワード:
エラーメッセージのアドバイスに従い、あなたはまた、代わりにあなたは改行文字をエスケープされている1つの次の構文を使用することができますメソッド(あなたの例ではbuild
という名前です)は、Groovy固有のものではなく、Gradle DSL機能です。
gradleのビルドスクリプトは、厳密にはGroovyスクリプトやクラスファイルではなく、DSLです。これはバグだと思うが、[Issue Trackerの問題](https://github.com/gradle/gradle/issues)として投稿する価値があるだろうか? –