Я пытаюсь достичь следующих целей:
- Создание файла
.schema
из моего определения схемы - Проверка
queries
с использованием файла .schema
, созданного на 1-м шаге - Создание
code
для queries
с использованием файла .schema
, созданного на 1-м шаге
Я могу достичь первых 2 целей с помощью следующей конфигурации в build.sbt
:
// generate a schema file
graphqlSchemaSnippet := "root.SchemaDefinition.StarWarsSchema"
target in graphqlSchemaGen := new File("src/main/graphql/schema")
// Validating queries
sourceDirectory in (Test, graphqlValidateQueries) := new File("src/main/graphql/queries")
enablePlugins(GraphQLSchemaPlugin, GraphQLQueryPlugin)
и когда я запускаю sbt graphqlValidateQueries
, из журналов видно, что он сначала создает файл схемы, а затем проверяет мои запросы по этому файлу схемы.
[info] Running graphql.SchemaGen /Users/gschambial/git/sangria-akka-http-example/src/main/graphql/schema/schema.graphql
[info] Generating schema in src/main/graphql/schema/schema.graphql
[info] Checking graphql files in src/main/graphql/queries
[info] Validate src/main/graphql/queries/human.graphql
[success] All 1 graphql files are valid
[success] Total time: 6 s, completed Apr 22, 2020 10:50:49 AM
Теперь для достижения goal no. 3
, когда я включаю GraphQLCodegenPlugin
Я получаю ошибки:
// generate a schema file
graphqlSchemaSnippet := "root.SchemaDefinition.StarWarsSchema"
target in graphqlSchemaGen := new File("src/main/graphql/schema")
// Validating queries
sourceDirectory in (Test, graphqlValidateQueries) := new File("src/main/graphql/queries")
// telling Codegen plugin to use this schema file
graphqlCodegenSchema := new File("src/main/graphql/schema/schema.graphql")
enablePlugins(GraphQLSchemaPlugin, GraphQLQueryPlugin, GraphQLCodegenPlugin)
Я ожидаю, что порядок выполнения будет:
- Генерация схемы
- Проверка запросов
- Создание кода для запросов
Но независимо от того, какую команду я запускаю sbt graphqlSchemaGen
sbt graphqlValidateQueries
или sbt graphqlCodegen
, выполняется следующий порядок:
- Создание кода для запросов
- Создание схемы
- Проверка схемы
[info] Set current project to sangria-akka-http-example (in build file:/Users/gschambial/git/sangria-akka-http-example/)
[info] Generate code for 1 queries
[info] Use schema src/main/graphql/schema/schema.graphql for query validation
[error] java.io.FileNotFoundException: src/main/graphql/schema/schema.graphql (No such file or directory)
[error] (Compile / graphqlCodegen) java.io.FileNotFoundException: src/main/graphql/schema/schema.graphql (No such file or directory)
Так как схема не генерируется до выполнения step 1
, она завершается ошибкой. Есть ли способ изменить порядок выполнения?
Любая помощь будет принята с благодарностью.