Netflix DGS Codegen无法从外部依赖Schema生成类问题排查
问题分析与解决方案
核心配置错误
你的application项目中,generateJava任务的配置存在两个关键问题:
显式设置
schemaPaths覆盖了默认扫描范围
当手动指定schemaPaths = ["src/main/resources/schema"]时,DGS代码生成插件只会扫描你指定的本地目录,不会自动扫描dgsCodegen依赖中的Schema文件。未启用依赖Schema扫描开关
即使添加了dgsCodegen依赖,插件默认不会主动扫描依赖中的Schema,需要显式开启对应配置。
修正后的application项目build.gradle配置
修改generateJava任务部分:
generateJava { schemaPaths = ["src/main/resources/schema"] // 保留本地Schema目录 packageName = "com.application.graphql.schemas" generateClient = true includeDependencySchemas = true // 新增:启用依赖中的Schema扫描 }
额外验证点
确保shared-schemas项目的Schema文件被正确打包到JAR中:
- 检查本地Maven仓库中的
shared-schemas-0.0.1-SNAPSHOT.jar,确认里面包含/schema/shared-models.graphqls文件。 - 如果缺失,可在
shared-schemas的build.gradle中显式添加资源打包配置(java-library默认会处理,此为保险操作):sourceSets { main { resources { srcDirs = ["src/main/resources"] } } }
重新执行步骤
- 重新发布
shared-schemas到本地仓库:./gradlew clean publishToMavenLocal - 重新构建
application项目:./gradlew clean build
此时,shared-models.graphqls中的模型会和本地Schema的模型一起生成到build/generated目录中。
内容的提问来源于stack exchange,提问作者SourceVisor
相关产品推荐
相关产品推荐

