gradle复制文件任务在构建中不起作用

gradle copy file task not working in build

我是gradle的新手,我想将gradlew build生成的jar文件复制到另一个目录。

1
2
3
4
task myCopyTask(type: Copy) {
    from"build/libs/gs.jar"
    into"D:/bin/gs"
}

我将上述任务添加到属于gs模块的build.gradle中,该模块将生成gs.jar。

问题是命令gradlew build将不执行复制,并且确实执行了此任务(我在myCopyTask中添加了println)。 但是,命令gradlew myCopyTask起作用。

首先,我认为复制任务可能运行得太早,因此我将其更改为

1
2
3
4
5
6
task myCopyTask(type: Copy) {
    doLast {
        from"build/libs/gs.jar"
        into"D:/bin/gs"
    }
}

即使gradlew myCopyTask也不起作用。 只有第一个版本才能通过命令gradlew myCopyTask运行,终端将显示:1个可执行任务:1个已执行

问题是什么?


您尚未将任务连接到Gradle的DAG中,因此当前仅在您执行gradlew myCopyTask时才执行

您可能会做类似的事情

1
2
3
4
5
6
7
apply plugin: 'base' // adds build and assemble lifecycle tasks
task myJarTask(type:Jar) {...}
task myCopyTask(type: Copy) {
    dependsOn myJarTask
    ...
}
assemble.dependsOn myCopyTask

参见https://docs.gradle.org/current/userguide/tutorial_using_tasks.html#sec:task_dependencies