ProgramingTip

SBT에 의해 생성 된 * 모든 것 *을 제거하는 쉬운 방법?

bestdevel 2020. 10. 17. 11:51
반응형

SBT에 의해 생성 된 * 모든 것 *을 제거하는 쉬운 방법?


SBT 빌드를 수행 한 결과 생성되는 모든 것을 쉽게 제거 할 수 있습니까? 그것은 모든 곳에있는 디렉토리를 생성합니다. 말 수있는

sbt clean clean-cache clean-lib clean-plugins

... 모든 것을 제거하지 않습니다.


SBT 0.13.5가있는 내 시스템 (Ubuntu Linux)과 Coursera Functional Programming 과정의 일부 프로젝트에서 모든 캐시 파일과 이어진 Scala 다운로드로 인해 12 개 프로젝트에 대해 총 2.1GB의 폴더가 발견되었습니다.

작동하고 거의 모든 것을 정리 하는 현재 SBT 명령 은 다음과 같다.

sbt clean clean-files

이렇게하면 최상위 "target"및 "lib_managed"폴더 (이 경우 23MB에서 3.2MB까지)가 제거 일부 대상 폴더는 프로젝트 아래에 남습니다.

./project/project/project/target
./project/project/target
./project/target

Linux find 명령 (@ jack-oconnor도 게시 함)이 매우 유용합니다.

find . -name target -type d -exec rm -rf {} \;

이로 내 프로젝트 중 하나에 대해 444KB에 불고기하고 2.1GB는 5.0MB로 프로젝트 중 하나에 대해!

Windows에서는 유용한 명령 줄 옵션이 많지 않습니다. (예 : 경로 이름에 별표 와일드 카드 없음)하지만 다음과 같이 항상 시도하고 강제 할 수 있습니다.

rmdir /s /q target project/target project/project/target

자동으로 수있는 최선의 방법은 DIR 명령입니다.

dir /ad /s /b | find "target"

분명히 이것은 Jenkins와 같은 통합 서버에서 재현 가능한 빌드에 매우 중요합니다!

SBT 다음과 같은에 명령 행 인수를 제공 하여 담쟁이 캐시 포함한를 모든 파일 이 통합 서버 작업 공간 내에 저장 되었는지 확인하십시오 .

-Dsbt.global.base=project/.sbtboot -Dsbt.boot.directory=project/.boot -Dsbt.ivy.home=project/.ivy

그런 다음 Jenkins 또는 다른 통합 서버에서 동등한 작업 공간 지우기 버튼을 클릭합니다. 반드시해야합니다!

또는 최신 버전의 sbt 실행기 확장을 사용하는 경우 -no-share대신 간단히 추가 할 수 있습니다 .


Linux 또는 이와 유사한 경우 소스 코드에있을 수있는 find -name이름의 디렉토리를 실수로 제거하지 않기 때문에이 방법 이보다 낫습니다 target.

find . -regextype posix-awk -regex \.(/project)*/target -exec rm -r {} +

셸 내 에서이 명령을 실행하는 경우 정규 서식을 인용해야합니다 (예 : bash의 경우).

find . -regextype posix-awk -regex '\.(/project)*/target' -exec rm -r {} +

BSD find (예 : Mac OS X)를 사용하면 명령은 다음과 가변합니다.

find -E . -regex \.(/project)*/target -exec rm -r {} +

나는 아주 좋은 제안에 동의하며 개인적으로 gnu make 작업으로 약간의 변형을 포함합니다.

Makefile의 내용 :

clean:
    find . -name target | xargs rm -fr

그런 다음 다음을 실행하십시오.

make clean

저는 Makefile을 문서로 코드로 사용하는 것을 좋아합니다.

참고 URL : https://stackoverflow.com/questions/4483230/an-easy-way-to-get-rid-of-everything-generated-by-sbt

반응형