4

私はいくつかのgradleの基本を試しています。これが私のgradleファイル「build.gradle」の外観です。

task hello
{
    doLast
    {
        println 'Hello World!'
    }
}

これにより、次のエラーが発生します。

D:\DevAreas\learn-gradle>gradle -q hello

FAILURE: Build failed with an exception.

* Where:
Build file 'D:\DevAreas\learn-gradle\build.gradle' line: 2

* What went wrong:
Could not compile build file 'D:\DevAreas\learn-gradle\build.gradle'.
> startup failed:
  build file 'D:\DevAreas\learn-gradle\build.gradle': 2: Ambiguous expression could be a parameterle
ss 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 exp
licit semicolon ';' @ line 2, column 1.
     {
     ^

  1 error


* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more l
og output.

そのようにビルドファイルに小さな変更を加えると

[かっこを 2 行目から 1 行目に移動したことに注意してください]

task hello{
    doLast
    {
        println 'Hello World!'
    }
}

出力が表示されます

Hello World!

問題なし。

括弧はgradleで大きな問題ですか? かっこを 2 行目に配置することで、何が間違っていたのでしょうか。

4

1 に答える 1

6

セミコロン推論を使用する他の言語と同様に、Groovy では改行が違いを生みます。最初のスニペットは として解析されますがtask hello; { ... }、これはあいまいで (2 番目のステートメントがブロックかクロージャーかを判断できません)、無効な Groovy 構文です。とにかく、それはあなたが望むものではありません。hello閉鎖をタスクに関連付けたい。このような驚きを避けるために、Java ブレース スタイルに従うことをお勧めします。

于 2012-07-08T18:11:50.480 に答える