2014-04-04 45 views
0

我想根據所選版本更改文件複製的目標目錄。 這不起作用,因爲任務圖在執行階段執行,但copyTask在配置階段設置。更改複製任務目標

我該如何做到這一點?

gradle.taskGraph.whenReady { taskGraph -> 
    println('taskGraph') 
    if (taskGraph.hasTask(buildRelease)){ 
     File toDir=file('test/r') 
     println('Copy to: ' + toDir.getName()) 
    }else if (taskGraph.hasTask(buildDevel)) { 
     File toDir=file('test/d') 
     println('Copy to: ' + toDir.getName()) 
    } 

} 

task buildDevel (dependsOn: ['copyTask']){} 
task buildRelease (dependsOn: ['copyTask']){} 

task copyTask(type: Copy) { 
     from "test" 
     into toDir 
     include 'a.txt' 
} 

回答

0

這可能會幫助你(你需要在同一水平上創建a.txt文件build.gradle位於:

gradle.taskGraph.whenReady { taskGraph -> 

    def cp = project.copyTask 
    if (taskGraph.hasTask(buildRelease)){   
     cp.into 'lol1' 
    } else if (taskGraph.hasTask(buildDevel)) { 
     cp.into 'lol2' 
    } 
} 

task buildDevel (dependsOn: ['copyTask']){} 
task buildRelease (dependsOn: ['copyTask']){} 

task copyTask(type: Copy) { 
    from file('.') 
    include 'a.txt' 
} 

這也將工作:

task buildDevel 
task buildRelease 

buildDevel.doFirst { 
    cp('lol1') 
} 

buildRelease.doFirst { 
    cp('lol2') 
} 

def cp(to) { 
    copy { 
    from file('.') 
    into to 
    include 'a.txt' 
    } 
}