Apollo3生成GraphQL查询文件时导入无法解析问题
解决Kotlin Multiplatform项目中Apollo3 GraphQL导入无法解析的问题
你遇到的这个导入无法解析的问题,核心原因是Apollo3插件和依赖版本不匹配,还混用了Apollo2的runtime依赖——Apollo3是完全重写的版本,和Apollo2的生态完全不兼容,这就导致生成的代码找不到对应的类,自然报导入错误。
下面是具体的修复步骤:
1. 统一Apollo3的插件与依赖版本
你的shared模块里,Apollo插件用的是3.0.0-alpha03,但commonMain的依赖却是Apollo2的apollo-runtime-kotlin:2.5.7,这是最关键的错误。修改shared模块的build.gradle.kts:
- 把commonMain中的依赖替换为Apollo3对应的runtime:
注意:Apollo3的依赖groupId已经从val commonMain by getting { dependencies { // 替换掉旧的Apollo2依赖 implementation("com.apollographql.apollo3:apollo-runtime:3.0.0-alpha03") } }com.apollographql.apollo改成了com.apollographql.apollo3,artifactId也去掉了-kotlin后缀,这是和Apollo2的重要区别。
2. 添加Apollo3的基础配置(可选但推荐)
为了让插件更明确地处理Schema和代码生成路径,建议在shared模块的build.gradle.kts中添加Apollo3的配置块:
apollo { service("service") { // 替换成你自己的包名,确保和生成代码的包一致 packageName.set("com.yourapp.graphql") // 指定Schema文件的路径,根据你的实际位置调整 schemaFile.set(file("src/commonMain/graphql/schema.graphqls")) } }
这个配置能确保生成的代码被放到正确的包下,避免因路径或包名不匹配导致的导入问题。
3. 清理并重新构建项目
执行以下步骤确保所有变更生效:
- 运行Gradle的
clean任务,清除旧的构建产物和生成的代码 - 重新运行
generateApolloSources任务(或者直接点击IDE的"Build Project"按钮) - 等待依赖同步完成后,检查生成的代码导入是否正常
为什么之前的配置会出问题?
Apollo3是Apollo团队完全重写的版本,不仅插件逻辑、代码生成规则和Apollo2不同,连依赖的groupId、artifactId都做了调整。你用Apollo3插件生成了基于Apollo3 API的代码,但项目里依赖的却是Apollo2的runtime,自然找不到对应的类,就会出现导入无法解析的错误。
内容的提问来源于stack exchange,提问作者David Nedrow
相关产品推荐
相关产品推荐

