如何正确使用 Gradle 任务上传文件?

How to upload file using Gradle task properly?

我正在尝试通过 Gradle 将调试 apk 文件上传到服务器。我为它使用了一个特殊的名称,比如“demo-testing.apk”或“demo-first.apk”。

class Apk extends DefaultTask {
    String apkName

    @TaskAction
    void uploadApk() {
        exec {
            commandLine(
                    "cmd",
                    "-c",
                    "curl -F \"demo${apkName}.apk=" +
                            "@${DEFAULT_BUILD_DIR_NAME}/outputs/apk/debug/app-debug.apk\" " +
                                    "https://URL"
            )
        }
    }
}

tasks.register("first", Apk) {
    group = 'apkUploads'
    description = 'Uploads first apk'
    apkName = '-first'
}

但由于这个异常,它没有执行(在命令行参数中使用适当的 URL):

Caused by: org.gradle.internal.metaobject.AbstractDynamicObject$CustomMessageMissingMethodException: Could not find method exec() for arguments [Apk$_uploadApk_closure1@58ed1
b0a] on task ':first' of type Apk.

有人可以告诉我我做错了什么吗?

所以感谢上面的评论,我应该调用 project.exec 而不是 exec 并且它起作用了