なぜgradle clean build
の代わりにgradle build
を実行するのですか?
私の理解では、Gradleはソースの変更を検出し、必要に応じて最終成果物を更新できます。では、なぜclean
にする必要があるのでしょうか?
クリーンタスク は Javaプラグイン によって定義され、buildDirフォルダーを削除するだけで、関連性のない以前のビルドの残りを含むすべてをクリーンアップします。そうしないと、以前のビルドで生成されたビルドアーティファクトが原因で破損する可能性のある、クリーンでないビルドになる可能性があります。
例として、ビルドに失敗したいくつかのテストが含まれており、これらは廃止されたため削除する必要があると判断したと仮定します。テスト結果を(cleanTestタスクを使用して)またはビルド全体を(クリーンタスクを実行して)クリーニングしないと、失敗したテスト結果でスタックし、ビルドが失敗します。同様の副作用は、ソースから削除されたリソース/クラスでも発生する可能性がありますが、ビルドフォルダーに残っており、クリーニングされていません。
Buckのような他のビルドツールは、一部のテストが削除されたことを検出し、クリーンなターゲットを実行する必要なくテストを実行しません。これはグラドルの落とし穴だと思います。