{"id":31792766,"url":"https://github.com/alex079/graphql-classes-maven-plugin","last_synced_at":"2026-01-08T00:14:18.683Z","repository":{"id":39930221,"uuid":"245287488","full_name":"Alex079/graphql-classes-maven-plugin","owner":"Alex079","description":"Maven plugin to generate boilerplate Java classes from GraphQL types and operations","archived":false,"fork":false,"pushed_at":"2025-08-09T14:47:40.000Z","size":381,"stargazers_count":3,"open_issues_count":2,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-10-19T05:36:22.857Z","etag":null,"topics":["graphql-client","graphql-java","maven-plugin"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Alex079.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-03-05T23:19:05.000Z","updated_at":"2025-08-09T14:47:44.000Z","dependencies_parsed_at":"2023-09-25T22:40:21.977Z","dependency_job_id":"67da5811-c00c-425a-b314-201ba727b57e","html_url":"https://github.com/Alex079/graphql-classes-maven-plugin","commit_stats":null,"previous_names":[],"tags_count":25,"template":false,"template_full_name":null,"purl":"pkg:github/Alex079/graphql-classes-maven-plugin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alex079%2Fgraphql-classes-maven-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alex079%2Fgraphql-classes-maven-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alex079%2Fgraphql-classes-maven-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alex079%2Fgraphql-classes-maven-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Alex079","download_url":"https://codeload.github.com/Alex079/graphql-classes-maven-plugin/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alex079%2Fgraphql-classes-maven-plugin/sbom","scorecard":{"id":10793,"data":{"date":"2025-08-11","repo":{"name":"github.com/Alex079/graphql-classes-maven-plugin","commit":"5a42e8479e0edfa0d440fbb118c77d6f940ae6a1"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.6,"checks":[{"name":"Code-Review","score":0,"reason":"Found 2/23 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":9,"reason":"11 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 9","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/maven.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/maven.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/Alex079/graphql-classes-maven-plugin/maven.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/maven.yml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/Alex079/graphql-classes-maven-plugin/maven.yml/master?enable=pin","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 10 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":9,"reason":"1 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-j288-q9x7-2f5v"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-14T14:29:42.061Z","repository_id":39930221,"created_at":"2025-08-14T14:29:42.061Z","updated_at":"2025-08-14T14:29:42.061Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280424210,"owners_count":26328462,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-22T02:00:06.515Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["graphql-client","graphql-java","maven-plugin"],"created_at":"2025-10-10T17:16:35.256Z","updated_at":"2025-10-22T10:54:51.708Z","avatar_url":"https://github.com/Alex079.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Maven build](https://github.com/Alex079/graphql-classes-maven-plugin/workflows/Java%20CI%20with%20Maven/badge.svg)\n\n# GraphQL Classes Generator\n\nThis is a maven 3 plugin for generating boilerplate Java classes from GraphQL types and operations.\n\n## Features\n\n- Uses only GraphQL files as input\n- Runs with or without POM configuration\n- Can be used on both client and server side\n- Generates only classes necessary to represent types and operations\n- Generated code has no dependencies by default\n\n## Goals\n\n### generate\n\nThis goal runs the classes generation and is bound to the phase generate-sources by default.\n\n## Use cases\n\n### Server side classes\n\nUsually, a server app needs all GraphQL schema types to be represented by Java classes. The plugin can be configured\nto output Java classes for GraphQL schema types by setting `generatedOutputTypes` property value to `SCHEMA_TYPES`.\n\n\u003cdetails\u003e\u003csummary\u003eExample\u003c/summary\u003e\n\nThe GraphQL types\n```graphql\ntype TreeNode {\n    left: TreeNode\n    right: TreeNode\n    value: String\n}\ninterface Interface1 {\n    switch: TreeNode\n}\n```\ncould be translated into the following Java classes\n```java\npackage pkg;\n/* imports */\npublic interface Interface1\n{\n\tTreeNode getSwitch();\n}\n```\n```java\npackage pkg;\n/* imports */\npublic class TreeNode\n{\n\tprivate TreeNode _left_ = null;\n\tpublic TreeNode getLeft() {\n\t\treturn this._left_;\n\t}\n\tpublic void setLeft(TreeNode v) {\n\t\tjava.util.stream.Stream.of(v)\n\t\t\t.forEach($ -\u003e {});\n\t\tthis._left_ = v;\n\t}\n\tprivate String _value_ = null;\n\tpublic String getValue() {\n\t\treturn this._value_;\n\t}\n\tpublic void setValue(String v) {\n\t\tjava.util.stream.Stream.of(v)\n\t\t\t.forEach($ -\u003e {});\n\t\tthis._value_ = v;\n\t}\n\tprivate TreeNode _right_ = null;\n\tpublic TreeNode getRight() {\n\t\treturn this._right_;\n\t}\n\tpublic void setRight(TreeNode v) {\n\t\tjava.util.stream.Stream.of(v)\n\t\t\t.forEach($ -\u003e {});\n\t\tthis._right_ = v;\n\t}\n\t/* equals, hashCode, toString */\n}\n```\n\u003c/details\u003e\n\n### Client-defined GraphQL operations\n\nA client app can define its own operations. Usually, there could be a file with definitions of operations and\nfragments. The `generatedOutputTypes` property value should be set to `DEFINED_OPERATIONS` to enable generation of Java\nclasses for GraphQL operations defined in files. The following classes will be generated for each operation:\n\n- a wrapper class, which requires variables to be set and provides the operation name, document, variables and the root result class\n- a variables class, which is used by the wrapper class to collect variables\n- a set of result classes, which contain the fields requested in the operation\n\nThe generated result classes will contain only the requested fields. Union (or interface) result classes will contain\nall the requested fields of all the requested union members (or interface implementors). Aliases must be set to avoid\nname collisions for fields from different fragments.\n\n\u003cdetails\u003e\u003csummary\u003eResult example\u003c/summary\u003e\n\nInput file with operations\n```graphql\nfragment ValueFragment on Type1MutationField2 {\n    t1Value: value\n}\n\nfragment ValueFragment on Type2MutationField2 {\n    t2Value: value {\n        ...ValueFragment\n    }\n}\n\nfragment ValueFragment on Type3MutationField2 {\n    t3Value: value\n}\n\nmutation updateField2($id: [ID!]! = [\"0\"]) {\n    field2(arg1: $id) {\n        id name\n        ...on Type2MutationField2 {\n            ...ValueFragment\n        }\n        ... on Type1MutationField2 {\n            ...ValueFragment\n        }\n    }\n}\n```\ncould be translated into the following classes\n```java\npackage pkg;\n/* imports */\npublic class UpdateField2MutationResult\n{\n\tprivate java.util.List\u003cpkg.field2.Interface1MutationField2Result\u003e _field2_ = null;\n\tpublic java.util.List\u003cpkg.field2.Interface1MutationField2Result\u003e getField2() {\n\t\treturn this._field2_;\n\t}\n\tpublic void setField2(java.util.List\u003cpkg.field2.Interface1MutationField2Result\u003e v) {\n\t\tjava.util.stream.Stream.of(v)\n\t\t\t.filter(java.util.Objects::nonNull)\n\t\t\t.flatMap(java.util.Collection::stream)\n\t\t\t.forEach($ -\u003e {});\n\t\tthis._field2_ = v;\n\t}\n\t/* equals, hashCode, toString */\n}\n```\n```java\npackage pkg;\n/* imports */\npublic class Interface1MutationField2Result\n{\n\tprivate String _name_ = null;\n\tpublic String getName() {\n\t\treturn this._name_;\n\t}\n\tpublic void setName(String v) {\n\t\tjava.util.stream.Stream.of(v)\n\t\t\t.map(java.util.Objects::requireNonNull)\n\t\t\t.forEach($ -\u003e {});\n\t\tthis._name_ = v;\n\t}\n\tprivate pkg.field2.t2Value.Type3MutationField2Result _t2Value_ = null;\n\tpublic pkg.field2.t2Value.Type3MutationField2Result getT2Value() {\n\t\treturn this._t2Value_;\n\t}\n\tpublic void setT2Value(pkg.field2.t2Value.Type3MutationField2Result v) {\n\t\tjava.util.stream.Stream.of(v)\n\t\t\t.forEach($ -\u003e {});\n\t\tthis._t2Value_ = v;\n\t}\n\tprivate Integer _t1Value_ = null;\n\tpublic Integer getT1Value() {\n\t\treturn this._t1Value_;\n\t}\n\tpublic void setT1Value(Integer v) {\n\t\tjava.util.stream.Stream.of(v)\n\t\t\t.forEach($ -\u003e {});\n\t\tthis._t1Value_ = v;\n\t}\n\tprivate String _id_ = null;\n\tpublic String getId() {\n\t\treturn this._id_;\n\t}\n\tpublic void setId(String v) {\n\t\tjava.util.stream.Stream.of(v)\n\t\t\t.map(java.util.Objects::requireNonNull)\n\t\t\t.forEach($ -\u003e {});\n\t\tthis._id_ = v;\n\t}\n\t/* equals, hashCode, toString */\n}\n```\n```java\npackage pkg;\n/* imports */\npublic class Type3MutationField2Result\n{\n\tprivate Integer _t3Value_ = null;\n\tpublic Integer getT3Value() {\n\t\treturn this._t3Value_;\n\t}\n\tpublic void setT3Value(Integer v) {\n\t\tjava.util.stream.Stream.of(v)\n\t\t\t.forEach($ -\u003e {});\n\t\tthis._t3Value_ = v;\n\t}\n\t/* equals, hashCode, toString */\n}\n```\n\u003c/details\u003e\n\n### Dynamic GraphQL operations\n\nA client app may need to create GraphQL operations at run time without defining them statically in files.\nThis can be achieved by setting `generatedOutputTypes` property to `DYNAMIC_OPERATIONS`. The following Java classes will\nbe generated for each schema operation:\n\n- a wrapper class, which requires a selection set and provides the operation document and the root result class\n\nAdditionally, the following classes, shared by all dynamic operations, will be generated:\n\n- selector classes, which are used by wrapper classes to collect field selection set\n- result classes, which contain the response fields requested in any selection set\n\nThe generated result classes will contain all possible fields. This includes union (or interface) results which are\nrepresented by classes containing all the fields of all the union members (or interface implementors) using\nautomatically generated aliases to avoid field name collisions.\n\n\n\u003cdetails\u003e\u003csummary\u003eUsage example\u003c/summary\u003e\n\nThe following code in Java\n```java\npublic class Class {\n\tpublic Query getQuery() {\n\t\treturn new DynamicQuery(query -\u003e query\n\t\t\t.getField2(\n\t\t\t\tfield2Arguments -\u003e field2Arguments\n\t\t\t\t\t.setArg2(List.of(new InputQueryArg2()))\n\t\t\t\t\t.setAfter(\"123\"),\n\t\t\t\tunionQueryField2Connection -\u003e unionQueryField2Connection\n\t\t\t\t\t.getPageInfo(pageInfo -\u003e pageInfo\n\t\t\t\t\t\t.getStartCursor()\n\t\t\t\t\t\t.getEndCursor()\n\t\t\t\t\t\t.getHasNextPage()\n\t\t\t\t\t\t.getHasPreviousPage())\n\t\t\t\t\t.getEdges(unionQueryField2ConnectionEdge -\u003e unionQueryField2ConnectionEdge\n\t\t\t\t\t\t.getCursor()\n\t\t\t\t\t\t.getNode(unionQueryField2 -\u003e unionQueryField2\n\t\t\t\t\t\t\t.onType1UnionField2(type1UnionField2 -\u003e type1UnionField2\n\t\t\t\t\t\t\t\t.getFieldA()\n\t\t\t\t\t\t\t\t.getSwitch(TreeNodeResultSelector::getValue))\n\t\t\t\t\t\t\t.onType2UnionField2(type2UnionField2 -\u003e type2UnionField2\n\t\t\t\t\t\t\t\t.getName()\n\t\t\t\t\t\t\t\t.getInt())\n\t\t\t\t\t\t\t.onType3UnionField2(type3UnionField2 -\u003e type3UnionField2\n\t\t\t\t\t\t\t\t.getName()\n\t\t\t\t\t\t\t\t.getFieldC())))));\n\t}\n}\n```\ncould produce a GraphQL operation like the below\n```graphql\nquery {\n  field2(\n    arg2: [{ id: null }]\n    after: \"\"\"123\"\"\"\n  ) {\n    pageInfo {\n      startCursor\n      endCursor\n      hasNextPage\n      hasPreviousPage\n    }\n    edges {\n      cursor\n      node {\n        ... on Type1UnionField2 {\n          fieldA_Type1UnionField2: fieldA\n          switch_Type1UnionField2: switch {\n            value\n          }\n        }\n        ... on Type2UnionField2 {\n          name_Type2UnionField2: name\n          int_Type2UnionField2: int\n        }\n        ... on Type3UnionField2 {\n          name_Type3UnionField2: name\n          fieldC_Type3UnionField2: fieldC\n        }\n      }\n    }\n  }\n}\n```\n\u003c/details\u003e\n\n### Serialization\n\nAll generated Java classes representing GraphQL types will have public getters for all fields. The private fields can be\nrenamed to avoid Java keyword collisions by setting `privateFieldPrefix` and/or `privateFieldSuffix`.\n\nIf a serialization engine accesses fields directly and not methods, it is possible to set `jsonPropertyAnnotation`\nproperty (i.e.`com.google.gson.annotations.SerializedName`) to allow access by exact GraphQL field names.\n\n## Mapping from GraphQL to Java\n\n| GraphQL                               | Java                                                                                                                             |\n|---------------------------------------|----------------------------------------------------------------------------------------------------------------------------------|\n| `scalar`                              | `String`, matching Java class or mapped Java class                                                                               |\n| `enum`                                | `enum`                                                                                                                           |\n| `interface`                           | `interface` with accessors for each GraphQL field                                                                                |\n| `union`                               | empty `interface` which is added to the list of implemented interfaces of Java classes representing union members                |\n| `type` or `input`                     | `class` with private fields with public accessors                                                                                |\n| `query`, `mutation` or `subscription` | `class` accepting variables, arguments, selection sets and providing operation name, operation document, variables, result class |\n| `[]`                                  | `java.util.List`                                                                                                                 |\n| `!`                                   | null check in setters                                                                                                            |\n\n# Plugin usage\n\n## POM\n\n| POM Property               | Type                        | Description                                                                                                                                                                                                                                                                                                                                                       |\n|----------------------------|-----------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| source                     | `FileSet`                   | Set of source files including both schema files and operation files.                                                                                                                                                                                                                                                                                              |\n| sources                    | `FileSet[]`                 | Set of source files including both schema files and operation files.                                                                                                                                                                                                                                                                                              |\n| outputDirectory            | `File`                      | The root directory for generated files.\u003cbr/\u003e_Default_: `\"${project.build.directory}/generated-sources/graphql-classes/java\"`                                                                                                                                                                                                                                      |\n| packageName                | `String`                    | Name of the base package for generated classes.\u003cbr/\u003e_Default_: `\"gql.generated\"`                                                                                                                                                                                                                                                                                  |\n| scalarMap                  | `Map\u003cString,String\u003e`        | Mapping of GraphQL scalars to Java classes.\u003cbr/\u003e_Default_:\u003cbr/\u003eInt -\u003e Integer\u003cbr/\u003eFloat -\u003e Double\u003cbr/\u003eID -\u003e String                                                                                                                                                                                                                                                |\n| aliasMap                   | `Map\u003cString,String\u003e`        | Mapping of GraphQL field names to GraphQL field aliases. Can be used to avoid Java keyword collisions for dynamic operations only.                                                                                                                                                                                                                                |\n| importPackages             | `Set\u003cString\u003e`               | Set of packages to import into generated classes.                                                                                                                                                                                                                                                                                                                 |\n| jsonPropertyAnnotation     | `String`                    | Annotation to be used on generated private fields.                                                                                                                                                                                                                                                                                                                |\n| privateFieldPrefix         | `String`                    | Prefix to be added to generated private field names to avoid Java keywords collisions.                                                                                                                                                                                                                                                                            |\n| privateFieldSuffix         | `String`                    | Suffix to be added to generated private field names to avoid Java keywords collisions.\u003cbr/\u003e_Default_: `\"__\"`, when jsonPropertyAnnotation is set                                                                                                                                                                                                                  |\n| generatedAnnotationVersion | `String`                    | The version of `@Generated` annotation to use on generated classes (i.e. \"1.8\", \"11\", \"15\", ...). At the moment, the real difference is between \"1.8\" and the rest.                                                                                                                                                                                               |\n| dataObjectEnhancement      | `DataObjectEnhancementType` | The type of data object enhancement. Can be empty or take one of the following values: METHOD_CHAINING (data object setters will return 'this' instead of 'void'), BUILDER (data objects will use builder pattern), VALUE (data objects will use value pattern).                                                                                                  |\n| generatedOutputTypes       | `Set\u003cGeneratedOutputType\u003e`  | The scope of the plugin output. Can be empty or take one or many values from the following list: SCHEMA_TYPES (all the types defined in GraphQL schema files), DEFINED_OPERATIONS (all the operations defined in input files), DYNAMIC_OPERATIONS (one operation per schema entry allowing to construct operations at runtime).\u003cbr/\u003e_Default_: DEFINED_OPERATIONS |\n| parserMaxTokens            | `Integer`                   | Maximum number of tokens to process by the GraphQL engine.                                                                                                                                                                                                                                                                                                        |\n\n\u003cdetails\u003e\u003csummary\u003eExample\u003c/summary\u003e\n\n```xml\n\u003cplugin\u003e\n  \u003cgroupId\u003ecom.github.alex079\u003c/groupId\u003e\n  \u003cartifactId\u003egraphql-classes-maven-plugin\u003c/artifactId\u003e\n  \u003cversion\u003e${VERSION}\u003c/version\u003e\n  \u003cconfiguration\u003e\n    \u003csource\u003e\n      \u003cincludes\u003e\n        \u003cinclude\u003eschema.graphqls\u003c/include\u003e\n        \u003cinclude\u003e*.graphql\u003c/include\u003e\n      \u003c/includes\u003e\n    \u003c/source\u003e\n    \u003cpackageName\u003eintegration.test\u003c/packageName\u003e\n    \u003coutputDirectory\u003e${project.build.directory}\\generated-gql-sources\\java\u003c/outputDirectory\u003e\n    \u003cscalarMap\u003e\n      \u003cAddress\u003eString\u003c/Address\u003e\n    \u003c/scalarMap\u003e\n    \u003cimportPackages\u003e\n      \u003cvalue\u003ejava.math\u003c/value\u003e\n    \u003c/importPackages\u003e\n    \u003cjsonPropertyAnnotation\u003ecom.google.gson.annotations.SerializedName\u003c/jsonPropertyAnnotation\u003e\n    \u003cdataObjectEnhancement\u003eMETHOD_CHAINING\u003c/dataObjectEnhancement\u003e\n    \u003cgeneratedAnnotationVersion\u003e1.8\u003c/generatedAnnotationVersion\u003e\n  \u003c/configuration\u003e\n  \u003cexecutions\u003e\n    \u003cexecution\u003e\n      \u003cgoals\u003e\n        \u003cgoal\u003egenerate\u003c/goal\u003e\n      \u003c/goals\u003e\n    \u003c/execution\u003e\n  \u003c/executions\u003e\n\u003c/plugin\u003e\n```\n\u003c/details\u003e\n\n## Without POM\n\n| Command Line Property          | Type                        | Description                                                                                                                                                                                                                                                                                                                                                         |\n|--------------------------------|-----------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| gql.sourceDirectory            | `File`                      | Directory containing source files.\u003cbr/\u003e_Default_: current directory                                                                                                                                                                                                                                                                                                 |\n| gql.sourceIncludes             | `Set\u003cString\u003e`               | Set of patterns to include.                                                                                                                                                                                                                                                                                                                                         |\n| gql.sourceExcludes             | `Set\u003cString\u003e`               | Set of patterns to exclude.                                                                                                                                                                                                                                                                                                                                         |\n| gql.outputDirectory            | `File`                      | The root directory for generated files.\u003cbr/\u003e_Default_: `\"./generated-sources/graphql-classes/java\"`                                                                                                                                                                                                                                                                 |\n| gql.packageName                | `String`                    | Name of the base package for generated classes.\u003cbr/\u003e_Default_: `\"gql.generated\"`                                                                                                                                                                                                                                                                                    |\n| gql.scalarMap                  | `Set\u003cString\u003e`               | Mapping of GraphQL scalars to Java classes formatted as a list of key=value pairs.\u003cbr/\u003e_Default_: `Int=Integer,Float=Double,ID=String`                                                                                                                                                                                                                              |\n| gql.aliasMap                   | `Set\u003cString\u003e`               | Mapping of GraphQL field names to GraphQL field aliases formatted as a list of key=value pairs. Can be used to avoid Java keyword collisions for dynamic operations only.                                                                                                                                                                                           |\n| gql.importPackages             | `Set\u003cString\u003e`               | Set of packages to import into generated classes.                                                                                                                                                                                                                                                                                                                   |\n| gql.jsonPropertyAnnotation     | `String`                    | Annotation to be used on generated private fields.                                                                                                                                                                                                                                                                                                                  |\n| gql.privateFieldPrefix         | `String`                    | Prefix to be added to generated private field names to avoid Java keywords collisions.                                                                                                                                                                                                                                                                              |\n| gql.privateFieldSuffix         | `String`                    | Suffix to be added to generated private field names to avoid Java keywords collisions.\u003cbr/\u003e_Default_: `\"__\"`, when jsonPropertyAnnotation is set                                                                                                                                                                                                                    |\n| gql.generatedAnnotationVersion | `String`                    | The version of `@Generated` annotation to use on generated classes (i.e. \"1.8\", \"11\", \"15\", ...). At the moment, the real difference is between \"1.8\" and the rest.                                                                                                                                                                                                 |\n| gql.dataObjectEnhancement      | `DataObjectEnhancementType` | The type of data object enhancement. Can be empty or take one of the following values: METHOD_CHAINING (data object setters will return 'this' instead of 'void'), BUILDER (data objects will use builder pattern), VALUE (data objects will use value pattern).                                                                                                    |\n| gql.generatedOutputTypes       | `Set\u003cGeneratedOutputType\u003e`  | The scope of the plugin output. Can be empty or take one or many values from the following list: SCHEMA_TYPES (all the types defined in GraphQL schema files), DEFINED_OPERATIONS (all the operations defined in input files), DYNAMIC_OPERATIONS (one operation per schema entry allowing to construct operations at runtime).\u003cbr/\u003e_Default_: `DEFINED_OPERATIONS` |\n| gql.parserMaxTokens            | `Integer`                   | Maximum number of tokens to process by the GraphQL engine.                                                                                                                                                                                                                                                                                                          |\n\n\u003cdetails\u003e\u003csummary\u003eExample\u003c/summary\u003e\n\n```shell\nmvn com.github.alex079:graphql-classes-maven-plugin:${VERSION}:generate \\\n-Dgql.sourceDirectory=src/main/resources \\\n-Dgql.sourceIncludes=*.graphql,*.graphqls \\\n-Dgql.outputDirectory=target/generated-sources/java \\\n-Dgql.importPackages=java.time \\\n-Dgql.scalarMap=CustomType1=String,CustomType2=Integer \\\n-Dgql.generatedAnnotationVersion=1.8\n```\n\u003c/details\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falex079%2Fgraphql-classes-maven-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falex079%2Fgraphql-classes-maven-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falex079%2Fgraphql-classes-maven-plugin/lists"}