能否修改Apollo Kotlin的默认Schema目录路径?
Apollo Kotlin 读取外部位置/独立仓库Schema的方案
当然可以,Apollo Kotlin完全支持从默认路径以外的位置读取Schema,下面是几种实用方案,帮你避免Schema重复:
1. 配置自定义本地Schema路径
你可以直接在Gradle配置里指定任意本地路径,不管是项目内其他目录,还是本地克隆的独立Schema仓库路径。
Kotlin DSL (build.gradle.kts) 示例:
apollo { service("myService") { // 指向本地克隆的MyGraphQLSchema仓库中的Schema文件 schemaFile.set(file("../MyGraphQLSchema/schema.graphqls")) } }
Groovy DSL (build.gradle) 示例:
apollo { service('myService') { schemaFile = file('../MyGraphQLSchema/schema.graphqls') } }
2. 通过Git子模块集成独立Schema仓库
如果想让团队成员同步Schema更方便,可以把MyGraphQLSchema作为Git子模块添加到当前项目:
- 执行命令添加子模块:
git submodule add https://your-git-repo/MyGraphQLSchema.git - 之后在Gradle配置里指向子模块内的Schema路径即可,比如:
file("./MyGraphQLSchema/schema.graphqls")
3. 通过Gradle依赖引入Schema(推荐)
如果独立Schema仓库发布了包含Schema的Maven/Gradle构件,你可以直接通过依赖引入,无需手动克隆仓库:
基础配置示例:
dependencies { // 替换为你的Schema构件坐标 implementation("com.yourorg:my-graphql-schema:1.0.0") } apollo { service("myService") { // 从依赖中加载Schema文件 schemaFiles.from(configurations.runtimeClasspath.files.flatMap { fileTree(it).matching { include("**/*.graphqls") } }) } }
简化配置(自动从依赖加载):
apollo { service("myService") { schemaFromDependencies.set(true) // 可选:排除不需要的Schema依赖 schemaDependencyExclusions.add("com.otherorg:unwanted-schema") } }
内容的提问来源于stack exchange,提问作者Vinod Jayachandran
相关产品推荐
相关产品推荐

