如何在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
相关产品推荐
相关产品推荐

