- Gradle 8.6부터 Windows 환경에서 안티바이러스 프로그램과의 충돌로 인해 'Could not move temporary workspace...' 오류가 발생하여 빌드 실패가 빈번히 발생했으나, Gradle 9.1 RC에서 드디어 해결
- Windows 사용자들은 1년 넘게 겪었던 빌드 오류에서 벗어나 9.1 버전부터 정상적으로 Gradle 빌드를 수행할 수 있게 될 예정. (관련 이슈: #31438)
이전 버전의 작동방식
- 파일 자체에 직접 파일 잠금(file lock)을 걸어 의존성 캐시의 불변성을 확보. 단순하고 명확한 방식.
8.6 버전부터의 작동 방식
- 성능 개선을 위해
CacheBasedImmutableWorkspaceProvider
가 도입되며 UUID 기반 임시파일을 생성, 작업 후 고유 경로로 이동
- 이 방식은 통합 테스트 시 파일 잠금 방식의 성능 저하 문제를 해결하고자 도입되었음
- 윈도우 환경에서 안티바이러스 프로그램의 실시간 감시 기능(새 파일 생성 시 잠금 획득)과 충돌하여 임시 파일 이동이 실패하는 문제 발생.
9.1 버전의 패치 방식
- 운영체제별 차등 잠금 전략 도입.
- Windows 환경: LockingStrategy.WORKSPACE_LOCK 방식을 채택. 이는 캐시 경로 내 하위 디렉터리(\workspace)를 생성하고, 해당 하위 디렉터리 전체에 락을 획득하여 안티바이러스 프로그램의 개별 파일 간섭을 차단함으로써 문제를 해결.
- Windows 외 환경: 기존 ATOMIC_MOVE (8.6 방식) 유지.