You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Gradle构建过程中添加Apollo命令实现自动执行?

Gradle自动执行Apollo Schema下载与配置

1. 修正Exec任务的命令参数

你的原有Exec任务写法存在问题,commandLine需要将命令和每个参数单独拆分传入,不能把整个命令串作为一个参数。修正后的任务如下:

task<Exec>("apolloDownload") {
    // 拆分命令与参数,确保Gradle能正确解析执行
    commandLine("apollo", "schema:download", "--endpoint=https://你的实际端点地址/graphql", "schema.json")
    // 指定命令执行的工作目录(这里用项目根目录,确保下载的schema.json生成在根目录)
    workingDir = project.rootDir
}

2. 添加自动移动文件到schema包的逻辑

下载完成后需要将schema.json自动复制到你的schema包目录,可直接在任务的doLast闭包中添加复制逻辑:

task<Exec>("apolloDownload") {
    commandLine("apollo", "schema:download", "--endpoint=https://你的实际端点地址/graphql", "schema.json")
    workingDir = project.rootDir

    doLast {
        // 复制文件到目标schema包路径,替换成你项目的实际包目录
        copy {
            from("schema.json")
            into("src/main/java/com/your-project-package/schema")
        }
        // 可选:删除根目录下的临时下载文件
        delete("schema.json")
    }
}

3. 配置任务依赖,实现build时自动触发

要让./gradlew build时自动执行该任务,只需让Java编译任务依赖apolloDownload任务——因为编译阶段通常需要schema文件,这样能确保下载操作在编译前完成:

tasks.compileJava {
    dependsOn("apolloDownload")
}

完整示例代码

将以上配置整合到你的build.gradle.kts中:

task<Exec>("apolloDownload") {
    commandLine("apollo", "schema:download", "--endpoint=https://你的实际端点地址/graphql", "schema.json")
    workingDir = project.rootDir

    doLast {
        copy {
            from("schema.json")
            into("src/main/java/com/your-project-package/schema")
        }
        delete("schema.json")
    }
}

tasks.compileJava {
    dependsOn("apolloDownload")
}

这样执行./gradlew build时,Gradle会先运行apolloDownload任务完成schema下载与移动,再继续后续的编译和构建流程。

内容的提问来源于stack exchange,提问作者engineering_the_future

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 08:50:23