2016-09-16 116 views
0

下面的腳本生成動態複製任務(cbat)。 但執行動態gradle複製任務不執行任務主體

gradle這個CBAT

只執行

copyFiles

方法定義(僅println語句),但不從源文件複製到目標目錄。

請看以下簡化的build.gradle: -

group 'learn' 
version '1.0-SNAPSHOT' 

apply plugin: 'java' 

sourceCompatibility = 1.5 

task fileCopy{ 
    group 'Config' 
    description 'Copy task' 
    ext.scriptSrc = 'C:\\Users\\devuser\\Desktop\\jars\\src\\binwin' 
    ext.scriptDest = 'C:\\Users\\devuser\\Desktop\\jars\\dest' 
    ext.includeEmptyDirs = false 

    //This adds a cbat gradle task 
    copyFiles("cbat", scriptSrc, scriptDest, "*.bat", includeEmptyDirs) 
} 


def copyFiles(String taskName, String source, String dest, String pattern, boolean includeEmptyDirs = false){ 
    println "$taskName" 
    println "$source" 
    println "$dest" 
    println "$pattern" 
    println "$includeEmptyDirs" 

    task "$taskName" (type:org.gradle.api.tasks.Copy) << { 
     includeEmptyDirs = includeEmptyDirs 
     FileCollection collection = fileTree(source).include(pattern) 
     from(collection) 
     into dest 
    } 
} 

我已經驗證了源和目標目錄存在。

回答

0

你要稱之爲 '執行()' 運行的任務,像這樣:

task copyFiles<<{ 
    task ([type:Copy], 'name'){ 
     println this.name 
    }.execute() 
}