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


106

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

답변:


133

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

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


89

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

outputs.upToDateWhen { false }

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


14
이것은 나를 위해 아무것도하지 않습니다. 나는 그것을 작업에 추가했고 "최신"을 얻었습니다. 재미있는 점은 ZipTask이고 대상 아카이브를 삭제했다는 것입니다.
— maaartinus 2014 년

5
:이 같은 사용을 위해 믿을 수 없다tasks.whenTaskAdded { theTask -> if (theTask.name.startsWith("dex")) { theTask.outputs.upToDateWhen { false } theTask.doLast { task ->... }}}
— 마틴 L.

작업이 실행되지 않는 경우에 대한 답변이 업데이트되었습니다.
— cmcginty

요즘 gradle 빌드 캐시가 활성화되면 작업이 다시 실행되지는 않지만 출력은 캐시에서 복원됩니다.
— Stephen Friedrich

25

당신이 사용할 수있는 cleanTaskname

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

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

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

someproject:cleanSometask2

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

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


1
'gradle clean'은 현재있는 프로젝트의 모든 것을 정리합니다. 기본적으로 기본적으로 '/ build'인 기본 출력 폴더를 삭제합니다. 이것이 당신이 찾던 것입니까?
— c_maker 2011-09-03

6
아니요. 지정된 작업에 대한 출력 파일이없는 것으로 최신 상태로 캡처 된 경우 최신 상태로 다시 설정되지 않습니다. 즉, 빌드 중단의 일부가 있었지만 전체적으로 성공하면 캡처 된 상태가 잘못된 것이므로이를 지워야합니다.
— Stefan Kendall 2011 년

1
일반적으로 $ buildDir의 모든 항목을 삭제하는 'clean'작업은 기본 플러그인에 의해 도입 된 빌드 스크립트에서 사용할 수 있습니다.
— Rene Groeschke 2012-06-20

5

작업이 계속 설정되어 있기 때문에 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 }
    }
  }
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.