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

#build.gradle #graphql-java #netflix-dgs

Вопрос:

Я пытаюсь создать файлы 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
 

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

Ответ №1:

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

Ответ №2:

Я пробовал в другом проекте, который использует gradle, и это работает.