GraphQL Codegen Maven plugin
Plugin Setup and Configuration
<build>
    <plugins>
        ...
        <plugin>
            <groupId>io.github.kobylynskyi</groupId>
            <artifactId>graphql-codegen-maven-plugin</artifactId>
            <version>5.10.0</version>
            <executions>
                <execution>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                    <configuration>
                        <!-- all config options: 
                        https://github.com/kobylynskyi/graphql-java-codegen/blob/main/docs/codegen-options.md
                        -->
                        <graphqlSchemas>
                            <includePattern>schema\.graphqls</includePattern>
                        </graphqlSchemas>
                        <outputDir>${project.build.directory}/generated-sources/graphql</outputDir>
                        <packageName>io.github.kobylynskyi.bikeshop.graphql.model</packageName>
                        <customTypesMapping>
                            <DateTime>java.util.Date</DateTime>
                            <Price.amount>java.math.BigDecimal</Price.amount>
                        </customTypesMapping>
                        <customAnnotationsMapping>
                            <EpochMillis>
                                <annotation>com.fasterxml.jackson.databind.annotation.JsonDeserialize(using = com.example.json.EpochMillisScalarDeserializer.class)</annotation>
                            </EpochMillis>
                        </customAnnotationsMapping>
                        <modelNameSuffix>TO</modelNameSuffix>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        ...
    </plugins>
</build>
You can run the plugin manually with mvn generate-sources. It will be run automatically as part of the Maven lifecycle
when compiling your code
Plugin Options
Please refer to Codegen Options
Examples
GraphQL server code generation
GraphQL client code generation
- Plugin configuration in pom.xml
 - Building GraphQL request and parsing response using Spring RestTemplate
 - Building GraphQL request and parsing response using RestAssured
 
Different configurations for graphql schemas
If you want to have different configuration for different .graphqls files (e.g.: different javaPackage, outputDir,
etc.), then you will need to define separate executions for each set of schemas. E.g.:
<executions>
    <execution>
        <id>graphqlCodegenService1</id>
        <goals>
            <goal>generate</goal>
        </goals>
        <configuration>
            <graphqlSchemaPaths>${project.basedir}/src/main/resources/schema1.graphqls</graphqlSchemaPaths>
            <outputDir>${project.build.directory}/generated-sources/graphql1</outputDir>
        </configuration>
    </execution>
    <execution>
        <id>graphqlCodegenService2</id>
        <goals>
            <goal>generate</goal>
        </goals>
        <configuration>
            <graphqlSchemaPaths>${project.basedir}/src/main/resources/schema2.graphqls</graphqlSchemaPaths>
            <outputDir>${project.build.directory}/generated-sources/graphql2</outputDir>
        </configuration>
    </execution>
</executions>