2014-10-08 38 views
2

我只是調整了我的Gradle構建以添加upToDateWhen閉包,它檢查了一堆任務輸出文件的lastModified時間。 (這是大約200-300個文件的掃描)。它在本地運行得很好,但是當我將它推送到我的Jenkins構建服務器(運行速度遠遠低於本地計算機)時,關閉似乎返回true,但任務仍在運行。我在輸出中看到了這一點:Gradle TaskOutputs.upToDate超時?

myTask task is 0 days old... 
Executing task ':myTask' (up-to-date check took 0.092 secs) due to: 
    No history is available. 

緊隨其後跟隨任務運行時生成的輸出。第一行是一個println,我卡在upToDateWhen閉包中,以幫助我看看它的評估結果。基本上,如果最新的修改文件少於1天,我認爲該任務是最新的。零表示它應該返回true。 (我只是更新了構建打印返回值,並會嘗試運行它幾個)。雖然我最初認爲它只是返回錯誤的值,我仔細檢查,並注意到這在輸出時顯示在本地運行:

myTask task is 0 days old... 
:myTask UP-TO-DATE 
:myNextTask 

所以我在質疑upToDateWhen是否在構建服務器上超時關閉,並且默認爲false。 Gradle中是否有這樣的邏輯來超時upToDateClosure,如果它需要太長的時間,我會假設爲false,或者我正在閱讀/希望得到太多的內容?

回答

0

否閉合時upToDate中沒有超時功能。

使用-i運行您的構建以啓用信息記錄。這給了你更多的信息,爲什麼一個任務被認爲是最新的。