2017-02-11 23 views
3

我遇到了一種情況,當所有事情都是最新的Gradle時,儘管我仍然喜歡它爲我運行任務。顯然,這不:強制Gradle運行任務,即使它是最新的

gradle test 
:compileJava UP-TO-DATE 
:processResources UP-TO-DATE 
:classes UP-TO-DATE 
:compileTestJava UP-TO-DATE 
:processTestResources UP-TO-DATE 
:testClasses UP-TO-DATE 
:test UP-TO-DATE 

BUILD SUCCESSFUL 

Total time: 0.833 secs 

我可以強制通過運行乾淨的測試運行測試,雖然這可以被認爲是在某些情況下的開銷。無論Gradle認爲它是否是最新版本,是否有強制執行任務的方法?

回答

3

如果要重新運行所有任務,可以使用command line parameter--rerun-tasks。然而,這與重做所有任務時的乾淨程度基本相同。

如果你想每次運行單個任務,那麼你可以指定它是永遠不會達到最新:

mytask { 
    outputs.upToDateWhen { false } 
} 

如果你想一次重新運行單個任務,並保留其他任務,你必須執行一個位邏輯:

mytask { 

    outputs.upToDateWhen { 
     if (project.hasProperty('rerun')) { 
      println "rerun!" 
      return false 
     } else { 
      return true 
     } 
    } 
} 

然後你就可以強制任務可以通過使用重新運行:

gradle mytask -Prerun

請注意,這也將重新運行依賴於mytask的所有任務。

相關問題