gradle - 更改复制任务目的地

标签 gradle

我想根据选择的构建更改文件复制的目标目录。
这不起作用,因为任务图是在执行阶段执行的,但是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'
}

最佳答案

这可能对您有帮助(您需要在与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'
   }
}

关于gradle - 更改复制任务目的地,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22861349/

相关文章:

groovy - 如何自定义每个依赖项的目标路径

gradle - 为什么gradle下载了gradle的两个副本,我如何防止它?

gradle - react native 失败 : Build failed with an exception

android - 如何使用 Gradle 将 KtLint 样式添加到 Android Studio?

android - 无法使用 Gradle 将 ViewPagerIndicator 添加到应用程序

gradle - 创建测试二进制文件的 Jar - Gradle

java - 依赖于另一个项目的 gradle 项目是否获取库?

java - 应用程序引擎。 HTTP错误: 503 on Gradle setup

android - Gradle错误

java - 如何从Restful方法或Java类中以编程方式运行gradle构建任务