最新のものがなく、構築する必要がある場合は、gradleに質問する方法はありますか?最新のものがない場合にgradleに質問する方法
4
A
答えて
1
これはできません。最新のチェックは、doFirst
が実行される直前の実行フェーズで実行されます。計算され、この値は格納されません。さらに、最新のチェックは前のタスクの出力に依存することがあります。したがって、タスクの最新ステータスを解決するには、すべての依存関係を実行する必要があります(dependsOn
タスク)。したがって、あなたが求めていることは、理論上、最新ではない最初のタスクに対してのみ機能します。
どのようにライフサイクルの動作を確認するには、ここでは簡単な例です:
task hello {
println "CONFIG1"
outputs.upToDateWhen {
println "UPTODATE"
return false
}
println "CONFIG2"
doFirst {
println "DOFIRST"
}
doLast {
println "DOLAST"
}
}
あなたは--debug
フラグでこれを実行すると、あなたはこれが最初に表示されます。
08:05:17.294 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Registering model element 'tasks.hello' (hidden = false)
08:05:17.302 [QUIET] [system.out] CONFIG1
08:05:17.329 [QUIET] [system.out] CONFIG2
08:05:17.333 [DEBUG] [org.gradle.configuration.project.BuildScriptProcessor] Timing: Running the build script took 0.764 secs
設定フェーズが設定されます最新のチェック。その後のGradleはタスクのグラフ計算:
08:16:26.212 [DEBUG] [org.gradle.execution.taskgraph.DefaultTaskGraphExecuter] Timing: Creating the DAG took 0.007 secs
をそして唯一、それはタスクを実行します。
08:05:17.430 [INFO] [org.gradle.execution.taskgraph.AbstractTaskPlanExecutor] :hello (Thread[main,5,main]) started.
08:05:17.431 [LIFECYCLE] [class org.gradle.internal.buildevents.TaskExecutionLogger] :hello
08:05:17.432 [DEBUG] [org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter] Starting to execute task ':hello'
08:05:17.461 [QUIET] [system.out] UPTODATE
08:05:17.465 [INFO] [org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter] Putting task artifact state for task ':hello' into context took 0.032 secs.
08:05:17.465 [DEBUG] [org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter] Determining if task ':hello' is up-to-date
08:05:17.465 [INFO] [org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter] Executing task ':hello' (up-to-date check took 0.0 secs) due to:
Task.upToDateWhen is false.
08:05:17.466 [DEBUG] [org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter] Executing actions for task ':hello'.
08:05:17.467 [QUIET] [system.out] DOFIRST
08:05:17.467 [QUIET] [system.out] DOLAST
タスクのツリーが構築され、タスクが実行されているときにのみチェックが発生した最新の順番に。
このチェックで値が保存されないため、依存するすべてのタスクを実行せずにタスクの最新状態を判断することはできません。
関連する問題
- 1. のprintfは(最小の場合)最初の質問にCシグナルハンドラ
- 2. Sqlite MAXを使用する - 最大値が等しい場合に最新のものを返す方法
- 3. PHP MySQLの基本的な質問、質問がない場合、イメージを隠す
- 4. PHPの場合の質問質問
- 5. 更新するものがない場合に挿入
- 6. Prolog:ユーザーに値がわからない場合にのみ質問する
- 7. Swift:ナビゲーションコントローラーがない場合、最初のビューコントローラーに戻る方法
- 8. マングース - 最新の質問
- 9. 最新のOpenGL質問
- 10. ソースが最新の場合、メッセージをエコーする方法
- 11. MySQL - 存在する場合は更新するがそれ以外の場合は挿入しない - 最も効果的な方法を実行する
- 12. インストールされているパッケージが最新でない場合にのみ "npm install"する方法
- 13. クリーンビルド後でも最新のGradle Zipタスク
- 14. 既に存在しない場合にのみ新しいオブジェクトを作成する最速の方法(SQLAlchemy)
- 15. 私の質問が何をしているのかわからない場合
- 16. PHP:ユーザがオンラインである場合の最も効率的な追跡方法
- 17. 特定の番号がPythonのディレクトリにある場合にファイルを上書きする最も良い方法
- 18. Cancan Thinking Sphinxについての最新の質問
- 19. 2つのチェックボックスが異なる階層にある場合、最も近いチェックボックスを見つける方法
- 20. リストを返す最も簡単な方法<T>最初の要素がない場合
- 21. 良いソフトウェア(ウェブサイト)テスターになる方法に関する質問
- 22. haskellプラットフォームを最新のものに更新する最もスムーズな方法は何ですか?
- 23. Androidの質問(ゲームの場合)
- 24. Lektorにお問い合わせフォームを含める最も良い方法は?
- 25. レコードが存在する場合にヘルプが必要な場合その他の更新方法
- 26. Marklogic - どのレコードにもフィールドがない場合の検索方法
- 27. 質問に参加する/結合する方法
- 28. アルゴリズムの実行時間、最も遅い最悪の場合最悪の場合
- 29. webdriver古いものが閉じた場合に新しいウィンドウに切り替える方法
- 30. 質問のための大きなファイルを保存する最も良い方法
清算していただきありがとうございます。 – James