GraphQL Kotlin Generator

Genrate Kotlin code for graphql-java from schema file. Does not depend on any specific framework.

How to use

build.gradle.kts
plugins {
    id("net.matsudamper.graphql.generator") version "<version>"
}
dependencies {
    implementation("net.matsudamper.graphql.generator:lib:<version>")
    implementation("com.graphql-java:graphql-java:<version>")
}

repositories {
    maven {
        url = uri("https://maven.pkg.github.com/matsudamper/graphql-kotlin-generator")
        credentials {
            username = "user_name"
            password = System.getenv("GITHUB_TOKEN") // require read:packages Permission
        }
    }
}

val generatedPath = "build/generated/graphql/main/kotlin"
sourceSets["main"].java.setSrcDirs(
    listOf(
        "src/main/kotlin",
        generatedPath,
    ).map { File(it) }
)

val generateGraphqlCodeTask = tasks.create<net.matsudamper.graphql.generator.gradle.GenerateQlTask>("generateGraphqlCode") {
    files = file("$projectDir/src/main/graphqls").listFiles().orEmpty()
        .filter { it.extension == "graphqls" }
    packageName = "base.package.name"
    outDir = file(generatedPath)
    scalarMap.putAll(
        mapOf(
            "UserId" to "kotlin.Long",
            "JvmInt" to "kotlin.Int",
            "JvmFloat" to "kotlin.Float",
            "JvmDouble" to "kotlin.Double",
            "Date" to "java.util.Date",
        )
    )
}

tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
    dependsOn(generateGraphqlCodeTask)
}
settings.gradle
pluginManagement {
    repositories {
        mavenLocal()
        maven {
            url = uri("https://maven.pkg.github.com/matsudamper/graphql-kotlin-generator")
            credentials {
                it.username = "user_name"
                it.password = System.getenv("GITHUB_TOKEN") // require read:packages Permission
            }
        }
        gradlePluginPortal()
    }
}