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

Kotlin Gradle构建生成GraphQL Schema类到Netflix包而非指定包

问题解决:DGS Codegen 生成类包名不符合预期

问题分析

你在多模块项目的application模块中执行./gradlew -p application clean bootJar时,发现GraphQL Schema生成的类默认进入com.netflix.dgs.codegen.generated包,而非指定的com.my.package。自己编写的GenerateJavaTask完全没生效——移除这些配置后,生成逻辑依然按默认包执行,原因在于:

  • 自定义的GenerateJavaTask只是空实现,没有实际调用DGS代码生成的核心逻辑;
  • DGS官方插件自带generateJava任务,默认会自动执行,你的自定义任务根本没参与到构建流程中。

解决方案

直接配置DGS Codegen官方插件的扩展参数,无需自定义任务。以下是修正后的application/build.gradle.kts:

plugins {
    id("org.springframework.boot")
    id("com.netflix.dgs.codegen") version "5.6.3"
    id("io.spring.dependency-management")
}

repositories {
    mavenCentral()
}

dependencies {
    implementation("org.springframework.boot:spring-boot-starter-web")
    implementation("org.springframework.boot:spring-boot-starter-jdbc")
    implementation("org.springframework.cloud:spring-cloud-starter-bootstrap:3.0.6")
    implementation("io.awspring.cloud:spring-cloud-starter-aws-parameter-store-config:2.3.5")
    implementation(group = "software.amazon.jdbc", name = "aws-advanced-jdbc-wrapper", version = "1.0.0")
    implementation(group = "org.postgresql", name = "postgresql", version = "42.5.0")
    implementation(platform("com.netflix.graphql.dgs:graphql-dgs-platform-dependencies:5.4.2"))
    implementation("com.netflix.graphql.dgs:graphql-dgs-spring-boot-starter")
    implementation("com.netflix.graphql.dgs:graphql-dgs-pagination")

    testImplementation("org.junit.jupiter:junit-jupiter-api:5.7.2")
    testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.7.2")
}

dependencyManagement {
    imports {
        mavenBom("com.netflix.graphql.dgs:graphql-dgs-platform-dependencies:5.4.2")
        mavenBom("org.springframework.cloud:spring-cloud-dependencies:2020.0.6")
        mavenBom("io.awspring.cloud:spring-cloud-aws:2.3.5")
    }
}

// 配置DGS Codegen插件核心参数
dgsCodegen {
    schemaPaths = listOf("src/main/resources/schema")
    packageName = "com.my.package"
    generateClient = true
}

sourceSets {
    named("main") {
        java {
            // 加入DGS默认的代码生成目录,确保编译时能识别生成类
            srcDir("build/generated-sources/dgs-codegen")
            srcDir("src/main/java")
        }
        resources {
            srcDir("src/main/resources")
        }
    }
}

// 让build任务依赖官方自带的generateJava任务
tasks.named("build") {
    dependsOn(tasks.named("generateJava"))
}

关键修改点

  • 移除了空实现的自定义任务,改用官方插件的dgsCodegen扩展配置核心参数;
  • 通过dgsCodegen明确指定目标包名、Schema路径和客户端生成开关;
  • 在源码集中添加DGS默认生成目录,确保生成类能被编译流程识别;
  • 绑定官方generateJava任务到构建流程,保证代码生成在编译前执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 02:52:50