2017-07-31 80 views
0

我不得不在這個項目中使用Gradle 2.3。手動刪除文件後,Gradle Copy Task是最新版本

我想從一個自定義配置複製一組依賴關係到一個特定的目錄。

如果我手動刪除其中一個文件,Gradle仍會將該任務標記爲「最新日期」,並最終得到一組不完整的文件。

task copyFiles(type: Copy) { 
    from configurations.zips 
    into 'zip-dir' 
    configurations.zips.allDependencies.each { 
     rename "-${it.version}", '' 
    } 
} 

雖然這在v4.0.2中按預期工作。

要解決它,我正在計算該目錄中的文件。

task copyFiles(type: Copy) { 
    outputs.upToDateWhen { 
     def count = new File('zip-dir').listFiles().count { it.name ==~ /.*zip/ } 
     count == configurations.zips.files.size() 
    } 
    from configurations.zips 
    into 'zip-dir' 
    configurations.zips.allDependencies.each { 
     rename "-${it.version}", '' 
    } 
} 

哪個問題和版本的gradle是固定的,是否有比迄今爲止更好的解決方法?

回答

0

你可以只用

outputs.upToDateWhen { false } 

運行它總是或不使用型複製您的任務和

task copyFiles { 
    doLast { 
     copy { 
      from configurations.zips 
      into 'zip-dir' 
      configurations.zips.allDependencies.each { 
      rename "-${it.version}", '' 
      } 
     } 
    } 
} 

請注意,這是一個解決辦法不是解決辦法

+0

的確,您可以在'doLast'中使用'copy'命令而不是'Copy'任務,但這與禁用* UP-TO-DATE * - 檢查此任務的方式相同。無論如何,這隻會是解決方法,而不是一個真正的解決方案。 –

+0

@ lu.koerfer他詢問了更好的解決方法,這是我過去這樣做的方式,你知道解決方案嗎?我在Gradle 2.3中遇到了這個問題 – LazerBanana

+0

我沒有說它是一個糟糕的解決方法(但不一定比他的方法更好),這也是爲什麼我刪除了downvote。 –

相關問題