Как изменить порядок выполнения плагинов sbt-graphql? - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь достичь следующих целей:

  1. Создание файла .schema из моего определения схемы
  2. Проверка queries с использованием файла .schema, созданного на 1-м шаге
  3. Создание 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)

Я ожидаю, что порядок выполнения будет:

  1. Генерация схемы
  2. Проверка запросов
  3. Создание кода для запросов

Но независимо от того, какую команду я запускаю sbt graphqlSchemaGen sbt graphqlValidateQueries или sbt graphqlCodegen, выполняется следующий порядок:

  1. Создание кода для запросов
  2. Создание схемы
  3. Проверка схемы
[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, она завершается ошибкой. Есть ли способ изменить порядок выполнения?

Любая помощь будет принята с благодарностью.

...