質問
a)
task build << {
description = "Build task."
ant.echo('build')
}
b)
task build {
description = "Build task."
ant.echo('build')
}
タイプBでは、タイピング時にタスク内のコードが実行されているように見えることに気付きます gradle -t
-Antは、さまざまな利用可能なタスクをすべてリストするだけでも、「ビルド」を反映します。説明は実際にはタイプBで表示されますが、タイプAは利用可能なタスクをリストするときに実行されないコードが実行されますが、実行時に説明は表示されません gradle -t
. 。ドキュメントは、これらの2つの構文の違いには触れていないようです(私が見つけたもの)。どちらの方法でもタスクを定義できるということだけです。
解決
最初の構文はタスクを定義し、タスクの実行時に実行されるコードを提供します。 2番目の構文はタスクを定義し、タスクを構成するためにすぐに実行されるコードを提供します。例えば:
task build << { println 'this executes when build task is executed' }
task build { println 'this executes when the build script is executed' }
実際、最初の構文は以下に相当します。
task build { doLast { println 'this executes when build task is executed' } }
したがって、上記の例では、構文Aの場合、説明はGradle -Tに表示されません。これは、説明を設定するコードが実行されるまで実行されないため、Gradle -Tを実行したときには発生しません。
構文bの場合、gradle -tを含むgradleのすべての呼び出しに対してant.echo()を実行するコードは実行されます-t
実行するアクションとタスクの説明の両方を提供するには、次のいずれかを実行できます。
task build(description: 'some description') << { some code }
task build { description = 'some description'; doLast { some code } }
所属していません StackOverflow