본문 바로가기

Server

Gradle findsecbugs-plugin.jar lock 문제 해결

728x90

서버 사용 환경 : Windows, Bamboo

윈도우 환경의 빌드서버에서 Gradle 을 이용한 빌드를 할 때 특정 jar 파일이 삭제되지 않는 것을 확인했다.
에러 로그는 아래와 같다

E:\bamboo.....\project>gradlew clean build
> Task :clean FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':clean'.
> Unable to delete directory 'E:\bamboo......\project\build'
Failed to delete some children. This might happen because a process has files open or has its working directory set in the target directory.
E:\bamboo......\project\build\sonar\project\app\findbugs\findsecbugs-plugin.jar
E:\bamboo......\project\build\sonar\project\app\findbugs
E:\bamboo......\project\build\sonar\project\app\
E:\bamboo......\project\build\sonar\project
E:\bamboo......\project\build\sonar

 

Bamboo 나 다른 서비스가 파일을 사용하고 있어서 삭제가 안되는 것인가 했는데 jvm 을 꺼야 파일 lock 이 풀렸다..

검색의 대부분은 안드로이드 스튜디오나 jvm 을 껐다 켜라는 해결방안이 많았다.
git 에 push 하면 자동으로 빌드되도록 설정 되어있는데 그 때마다 서버의 jvm 을 켜고 끌 수도 없는 노릇이라서 다른 해결 방안이 필요했다.

나와 같은 이슈를 가진 사람들을 찾았지만 문제를 해결할 방안이 있어보이진 않았다
https://github.com/spotbugs/sonar-findbugs/issues/128

빌드 명령을 gradlew clean build 에서 gradlew build 로 고치는것도 방법중의 하나인데 clean 명령어를 수행하지 않는것이 매끄럽지 않아 보였다.

그래서 gradle 파일 중 clean 명령어를 원래 아래 상태에서

task clean(type: Delete) {
    delete rootProject.buildDir
}


아래처럼 변경

task clean(type: Delete) {
	delete fileTree(dir: rootProject.buildDir, exclude: "**/findsecbugs-plugin.jar")
}

파일 lock 되어있는 jar 파일을 제외하고 빌드.

728x90