GraphQL Java Codegen makes it easy to make your Java application to follow a schema-first approach whether it is a server or client application.
Following classes can be generated based on your GraphQL schema:
- Interfaces for GraphQL queries, mutations and subscriptions.
- Interfaces for GraphQL unions.
- POJO classes for GraphQL types and inputs.
- Enum classes for GraphQL enums.
- Interfaces for GraphQL type fields (e.g. for parametrized fields) aka "Resolvers".
- Client Request classes for GraphQL queries, mutations and subscriptions.
- Generate classes in Java, Kotlin or Scala.
- Recursive schemas lookup by file name pattern.
- Generate code based on GraphQL schema or GraphQL Query Introspection Result.
- Generate POJOs with or without: Builder pattern, immutable fields,
toString()
,equals()
andhashCode()
, etc. - Flexible API interfaces naming conventions (based on schema file name, folder name, etc.)
- Custom java package names for model and API classes.
- Custom prefix/suffix for model, API, type resolver, request, response classes.
- Custom annotations for generated classes (e.g.: validation annotations for generated model classes or specific type fields, annotations for GraphQL directives, etc.)
- Relay support.
- Ability to define codegen configuration via external json file.
For the full list of codegen configs please refer to: Codegen Options
- Gradle plugin: graphql-java-codegen-gradle-plugin
- Maven plugin: grapqhl-java-codegen-maven-plugin
- SBT plugin: grapqhl-java-codegen-sbt-plugin
Please see CONTRIBUTING.md.