This Gradle plugin allows you to generate the GraphQL Schema on build.
Add this to your build.gradle:
plugins {
id 'io.smallrye.graphql' version '1.0.2-SNAPSHOT'
}
The schema will appear as build/generated/schema.graphql
by default.
The plugin’s generateSchema
task can customized like:
generateSchema {
destination = null
includeTransitiveDependencies = true
includeScalars = true
}
This will include the project’s dependencies (including the transitive dependencies) to scan for GraphQL model classes.
As the destination is set to null
the generated schema will only be output to the console and saved to a file.
In case external dependencies need to be scanned for GraphQL model classes a more advanced configuration could look like:
configrations {
graphQLSchema
}
dependencies {
graphQLSchema ..
}
generateSchema {
includeDependencies = true
configurations = ["graphQLSchema"]
}
This defines a separate graphQLSchema
configuration.
In the dependencies block the external dependencies containing the GraphQL mode class should then be registered for the graphQLSchema
configuration.
The generateSchema
task is then customized to only include dependencies from the graphQLSchema
configuration.
Also note that we set includeDependencies
to true
(and not includeTransitiveDependencies
).
This will make sure only direct dependencies will be be scanned and not possible transitive dependencies.
-
destination
- To override the defaultbuild/generated/schema.graphql
destination. -
includeDependencies
- Scan project’s dependencies for GraphQL model classes too. Default false. -
includeTransitiveDependencies
- Scan project’s dependencies (including the transitive dependencies) for GraphQL model classes too. Default false. -
configurations
- If the aboveincludeDependencies
orincludeTransitiveDependencies
is true, you can control what configurations should be included. Default isimplementation
. -
dependencyExtensions
- If the aboveincludeDependencies
orincludeTransitiveDependencies
is true, you can control what dependency extensions should be included. Default isjar
. -
includeScalars
- Include scalars in the schema. Default false. -
includeDirectives
- Include directives in the schema. Default false. -
includeSchemaDefinition
- Include the schema definition. Default false. -
includeIntrospectionTypes
- Include the introspection types in the schema. Default false.