ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ㅡGradle task outcome labels란? (feat UP-TO-DATE vs FROM-CACHE)
    카테고리 없음 2023. 11. 28. 22:15

    Gradle의 task outcome labels란?

     Gradle에서는 빌드를 여러 단계로 세분화할 수 있는데, 이 세분화 단위를 task라고 한다. 빌드도 하나의 task이다. gradle에서 빌드를 실행하면 빌드 내에 포함된 여러 task들이 실행되는데, 각 task는 실제로 실행이 될 수도 있고 그렇지 않을 수도 있다. 실제로 실행됐는지 나타내는 상태를 task outcome label이라고 한다.

    task outcome labels의 종류

    task outcome label은 아래 5개 종류로 구성되어 있다.
     

    label 이름task 실행 여부비고
    No label (or EXECUTED)O혹은 해당 task가 의존하고 있는 task가 실행됨.
    UP-TO-DATEXtask의 현재 입력이 이전 입력과 같아서 현재 입력이 최신 상태이고, 이전 출력이 존재하여 이전 출력을 그대로 재사용. 그리고 해당 task가 의존하고 있는 task도 실행되지 않음(UP-TO-DATE 이거나 FROM-CACHE 이거나 SKIPPED).
    FROM-CACHEXtask의 결과물이 캐시되어 있어서 캐시된 결과물을 재사용.
    SKIPPEDXgradle 명령어에 해당 task를 실행하지 않도록 설정됨.
    NO-SOURCEXtask에서 처리할 소스 파일이 없음. 

    UP-TO-DATE와 FROM-CACHE

     UP-TO-DATE와 FROM-CACHE가 약간 헷갈릴 수 있다. 왜냐하면 둘 다 기존에 생성된 출력을 재사용하는 방식이기 때문이다. 하지만 UP-TO-DATE는 현재 입력이 최신 입력일 때에만 동작하고 FROM-CACHE는 그렇지 않아도 동작한다. 또한 UP-TO-DATE는 로컬 저장소를 대상으로만 동작하지만 UP-TO-DATE는 로컬 저장소는 물론이고 리모트 저장소를 대상으로도 동작한다. 그리고 UP-TO-DATE가 FROM-CACHE보다 체크되는 순서가 빠른데, 현재 입력이 최신이라면 일단 먼저 UP-TO-DATE 상태인지를 체크하고 현재 입력이 최신이 아니면 FROM-CACHE 상태인지를 체크한다.


    참고 레퍼런스 https://docs.gradle.org/current/userguide/more_about_tasks.html

    댓글

Designed by Tistory.