2016-12-06 151 views
3

我有一個副本任務1個文件搖籃副本任務失敗默默

task myCopyTask(type: Copy) { 
    copy { 
     from "/path/to/my/file" 
     into "path/to/out/dir" 
    } 
} 

怎麼辦,所以如果複製失敗任務失敗?現在如果文件不存在,它不會給出錯誤。


Fail Gradle Copy task if source directory not exist給出了一個解決方案。這是行不通的,因爲如果一切都不在

copy { ... } 

該任務根本不起作用。


我想也

task myCopyTask(type: Copy) { 
    copy { 
     from "/path/to/my/file" 
     into "path/to/out/dir" 
     inputs.sourceFiles.stopExecutionIfEmpty() 
    } 
} 

以上將失敗,因爲inputs.sourceFiles將是空的。

回答

4

你爲什麼不指定你的任務是:

task myCopyTask(type: Copy) { 
    from "/path/to/my/file" 
    into "path/to/out/dir" 
    inputs.sourceFiles.stopExecutionIfEmpty() 
} 

這會工作期間執行階段的預期,而你的解決方案將想盡一切時間在構建的配置階段複製的東西你調用任何任務。

-1

任務的第一項定義其實沒有你從任務的期望:

是acutually一樣

task myCopyTask(type: Copy) { 
    project.copy { 
     from "/path/to/my/file" 
     into "path/to/out/dir" 
    } 
} 

它將執行任務配置過程中copy行動,不管這個任務是否被調用。

你需要的是:

task myCopyTask(type: Copy) { 
    from "/path/to/my/file" 
    into "path/to/out/dir" 

    doFirst { 
     if(inputs.empty) throw new GradleException("Input source for myCopyTask doesn't exist") 
    } 
}