Плагин генерации кода DGS: generateJava не работает

Я пытаюсь сгенерировать файлы pojo из схемы, используя это руководство https://netflix.github.io/dgs/generating-code-from-schema/

build.gradle.kts

      dependencies {
    implementation("org.springframework.boot:spring-boot-starter-web")
    implementation(project(":graphql-dgs-spring-boot-starter"))
    implementation(project(":graphql-dgs-subscriptions-websockets-autoconfigure"))
    implementation("io.projectreactor:reactor-core:3.4.0")

    api("com.graphql-java:graphql-java:${Versions.GRAPHQL_JAVA}") //v 16.2
}

// Using plugins DSL
plugins {
    id("com.netflix.dgs.codegen") version "4.4.1"
}

tasks {
    generateJava {
//        schemaPaths = ["${projectDir}/src/main/resources/schema"] // List of directories containing schema files
        packageName ="com.example.packagename" // The package name to use to generate sources
        generateClient = true // Enable generating the type safe query API
    }
}

Получение ошибки

      
Caused by: java.lang.UnsupportedOperationException: java.io.InvalidClassException: org.antlr.v4.runtime.atn.ATN; Could not deserialize ATN with UUID 59627784-3be5-417a-b9eb-8131a7286089 (expected aadb8d7e-aeef-4415-ad2b-8204d6cf042e or a legacy UUID).
    at org.antlr.v4.runtime.atn.ATNDeserializer.deserialize(ATNDeserializer.java:153)
    at graphql.parser.antlr.GraphqlLexer.<clinit>(GraphqlLexer.java:337)
    ... 231 more
Caused by: java.io.InvalidClassException: org.antlr.v4.runtime.atn.ATN; Could not deserialize ATN with UUID 59627784-3be5-417a-b9eb-8131a7286089 (expected aadb8d7e-aeef-4415-ad2b-8204d6cf042e or a legacy UUID).
    ... 233 more

Я пробовал старые версии плагина, но это не помогло

2 ответа

Похоже, у вас конфликт пути к классам с ANTLR. Скорее всего, это вызвано другим плагином Gradle, который использует другую (возможно, более старую) версию ANTLR. Простой обходной путь - изменить порядок ваших плагинов, поместив плагин codegen перед другим плагином. Надеюсь, другой плагин работает с новой версией ANTLR, но обычно это так.

Я пробовал в другом проекте, использующем gradle, и он работает.

Другие вопросы по тегам