2016-11-18 9 views
2

を理解するには、build.gradleのGradle:必要性のヘルプが

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

task count { 
    println "one" 
    doLast{ 
     4.times {print "$it "} 
    } 
    println "two" 
    doFirst{ 
     2.times {println "$it - 1 "} 
    } 
    3.times {println("$it -3")} 
} 

task intro(dependsOn: hello){ 
    doLast{ 
     println("I'm Gradle!") 
    } 
} 

シェルで実行

gradle intro 

one 
two 
0 -3 
1 -3 
2 -3 
:hello 
Hello World! 
:intro 
I'm Gradle! 

BUILD SUCCESSFUL 

を得るに持っていますが、それは正しくありません! 正しい出力は

:hello 
Hello World! 
:intro 
I'm Gradle! 

BUILD SUCCESSFUL 

どうしたのですか?

PS ここであまりにも多くのコード:( あまりにも多くのコードがここにありますのでに詳細を追加することがあるために詳細を追加:( あまりにも多くのコードがここにありますのでに詳細を追加:( ために詳細を追加することがあまりにも多くのコードはここにある:(

+0

あなたが得たものがなぜ正しくないと思いますか? (どういうわけか、それはgradleがしているので、定義上正しいです)。 ps。この質問への答えはあなたのフィラーのテキストを代用するのに便利です。 – Henry

答えて

2

は、なぜあなたはおそらく、それが絶対的に正しいのですか?それは間違っていると思います。これは、すべてのビルドの設定によるものです。official user guideでそれについての記事を読む。

の数があります。ビルド中にフェーズが実行され、そのうちの1つがコンフィギュレーションフェーズです。あなたが見ることを期待していない - 構成の出力です。タスクの終了時に何かすると、doLastまたはdoFirstクロージャに配置して実行フェーズで実行するまで(つまり、<<で終了すると、doLastと同じになります)、ビルドのコンフィグレーションで実行されます。

構成が実行されるかどうかに関係なく、すべてのタスクに対して構成が実行されることに注意してください。これが予期せぬアウトプットの理由です。ビルド構成の一部として行われていますが、何らかのタスクの中で宣言されています。

+0

spasibo、Stanislav! – xrabbit