File Gradle:无法复制文件

File Gradle:无法复制文件,file,gradle,copy,File,Gradle,Copy,我试着用gradle复制一个文件。 创建一个文件、扫描一个目录没有问题,但文件的副本不起作用 task toDo3{ println("task toDo3 start in $projectDir" ) new File("$projectDir/version.txt").text = """ Version: $version Revision: 1.0.2

我试着用gradle复制一个文件。 创建一个文件、扫描一个目录没有问题,但文件的副本不起作用

task toDo3{
    println("task toDo3 start in $projectDir" )

    new File("$projectDir/version.txt").text =
            """
                Version: $version
                Revision: 1.0.2
                Buildtime: ${new SimpleDateFormat("dd-MM-yyyy HH:mm:ss").format(new Date())}
                Application-name: foobarbaz app
            """
    println("task toDo3 end" )
}

task toDo4(type: Copy) {
    println("task toDo4 start" )
    from "src/main/version.txt"
    into "build"
    println("task toDo4 end" )
}
你知道这个问题吗


感谢您的帮助

您需要理解

所有println语句都处于配置阶段,而您可能希望它们在执行阶段触发。您的toDo3在配置阶段执行所有操作,在执行阶段不执行任何操作

您可能希望将println的etc放入
doFirst{…}
doLast{…}
闭包中

src/main
下生成文件也是不好的做法。最好在$buildDir下生成文件,以便:

  • 被“清除”任务删除
  • 不会意外地提交到源代码管理
  • 不影响Gradle的最新检查/任务跳过

  • 您可以在
    $projectDir
    中创建文件,然后从不同的目录
    src/main
    进行复制。此外,您的任务toDo3在配置阶段执行,而不是在执行阶段执行。因此,无论您是否执行toDo3,文件总是被创建的。它的所有代码都应该在doLast{}块中。谢谢,我试过了