[groovy] Gradle 작업의 UP-TO-DATE 속성을 재설정 하시겠습니까?

gradle 작업을 다시 실행하거나 모든 작업을 다시 최신 상태가 아닌 상태로 재설정 할 수있는 방법이 있습니까?



답변

-C rebuildGradle의 캐시를 다시 빌드 하여 빌드를 실행하십시오 .

최신 버전의 Gradle에서는 --rerun-tasks


답변

단일 작업 만 항상 실행 outputs하려면 작업 내부에 속성을 설정할 수 있습니다 .

outputs.upToDateWhen { false }

작업에 정의 된 파일 입력이없는 경우 Gradle은 위 코드를 사용하는 경우에도 작업을 건너 뛸 수 있습니다. 예를 들어, 압축 또는 복사 태스크에는 태스크 정의 의 구성 단계 에서 제공되는 파일이 하나 이상 있어야 합니다.


답변

당신이 사용할 수있는 cleanTaskname

당신이 가지고 있다고 가정합시다

:someproject:sometask1 UP-TO-DATE
:someproject:sometask2 UP-TO-DATE
:someproject:sometask3 UP-TO-DATE

강제로 sometask2를 다시 실행하도록하겠습니다.

someproject:cleanSometask2

모든 것을 실행하는 작업을 실행하기 전에.

분명히 gradle에서 UP-TO-DATE를 이해하는 모든 작업은 자체 청소 방법도 이해합니다.


답변

작업이 계속 설정되어 있기 때문에 outputs.upToDateWhen { false }작업 내부 에 설정 하거나 플래그를 추가 --rerun-tasks해도 도움이되지 않는 어려운 경우가있었습니다.setOnlyIffalse 실행할 때마다 가있었습니다.

다음을 추가하여 build.gradle강제 실행 myTask:

gradle.taskGraph.whenReady { taskGraph ->
  def tasks = taskGraph.getAllTasks()
  tasks.each {
    def taskName = it.getName()
    if(taskName == 'myTask') {
      println("Found $taskName")

      it.setOnlyIf { true }
      it.outputs.upToDateWhen { false }
    }
  }
}


답변