- Gradle 8.6以降、Windows環境でアンチウイルスプログラムとの衝突により 'Could not move temporary workspace...' エラーが発生し、ビルド失敗が頻発していたが、Gradle 9.1 RCでようやく解決された
- Windowsユーザーは1年以上続いたビルドエラーから解放され、9.1バージョンから正常にGradleビルドを実行できるようになる見込み。(関連イシュー: #31438)
以前のバージョンの動作方式
- ファイル自体に直接ファイルロックをかけ、依存性キャッシュの不変性を確保。シンプルで明確な方式。
8.6バージョンからの動作方式
- パフォーマンス改善のため、
CacheBasedImmutableWorkspaceProviderが導入され、UUIDベースの一時ファイルを作成し、処理後に固有パスへ移動するようになった
- この方式は統合テスト時に発生するファイルロック方式のパフォーマンス低下問題を解決するために導入された
- Windows環境でアンチウイルスプログラムのリアルタイム監視機能(新規ファイル作成時にロックを獲得)と衝突し、一時ファイル移動が失敗する問題が発生。
9.1バージョンのパッチ方式
- OS別の差分ロック戦略を導入。
- Windows環境: LockingStrategy.WORKSPACE_LOCK方式を採用。これはキャッシュパス内で**サブディレクトリ(\workspace)**を作成し、そのサブディレクトリ全体にロックを取得してアンチウイルスプログラムによる個別ファイル干渉を遮断し、問題を解決する。
- Windows以外の環境: 従来のATOMIC_MOVE(8.6方式)を維持。
まだコメントはありません。