使用 application.yaml 而不是 application.properties 配置应用程序

Configuring application using application.yaml instead of application.properties

我有一个小型 Quarkus 1.1.0.Final Web 应用程序(使用 Java 1.8)。我正在尝试使用 YAML 文件来配置应用程序(而不是通常的 application.properties),但应用程序无法启动。我总是收到这条不太有用的错误消息:

13:53:32,494 ERROR [io.qua.dev.DevModeMain] Failed to start Quarkus: java.lang.RuntimeException: io.quarkus.builder.ChainBuildException: No producers for required item class io.quarkus.deployment.builditem.BuildTimeRunTimeFixedConfigurationBuildItem
    at io.quarkus.runner.RuntimeRunner.run(RuntimeRunner.java:180)
    at io.quarkus.dev.DevModeMain.doStart(DevModeMain.java:177)
    at io.quarkus.dev.DevModeMain.start(DevModeMain.java:95)
    at io.quarkus.dev.DevModeMain.main(DevModeMain.java:66)
Caused by: io.quarkus.builder.ChainBuildException: No producers for required item class io.quarkus.deployment.builditem.BuildTimeRunTimeFixedConfigurationBuildItem
    at io.quarkus.builder.BuildChainBuilder.build(BuildChainBuilder.java:240)
    at io.quarkus.deployment.QuarkusAugmentor.run(QuarkusAugmentor.java:112)
    at io.quarkus.runner.RuntimeRunner.run(RuntimeRunner.java:113)
    ... 3 more

13:53:32,519 INFO  [io.qua.dev.DevModeMain] Attempting to start hot replacement endpoint to recover from previous Quarkus startup failure
13:53:32,532 ERROR [io.qua.dev.DevModeMain] Failed to start quarkus: java.lang.IllegalArgumentException: workerPoolSize must be > 0
    at io.vertx.core.VertxOptions.setWorkerPoolSize(VertxOptions.java:275)
    at io.quarkus.vertx.core.runtime.VertxCoreRecorder.convertToVertxOptions(VertxCoreRecorder.java:151)
    at io.quarkus.vertx.core.runtime.VertxCoreRecorder.initializeWeb(VertxCoreRecorder.java:104)
    at io.quarkus.vertx.http.runtime.VertxHttpRecorder.startServerAfterFailedStart(VertxHttpRecorder.java:115)
    at io.quarkus.vertx.http.deployment.devmode.VertxHotReplacementSetup.handleFailedInitialStart(VertxHotReplacementSetup.java:30)
    at io.quarkus.dev.RuntimeUpdatesProcessor.startupFailed(RuntimeUpdatesProcessor.java:449)
    at io.quarkus.dev.DevModeMain.doStart(DevModeMain.java:191)
    at io.quarkus.dev.DevModeMain.start(DevModeMain.java:95)
    at io.quarkus.dev.DevModeMain.main(DevModeMain.java:66)

这是我的 YAML 文件:

#
# https://quarkus.io/guides/all-config
# https://quarkus.io/guides/config#overriding-properties-at-runtime
quarkus:
  datasource:
    driver: org.postgresql.Driver
  flyway:
    migrate-at-start: true
  health:
    extensions:
      enabled: true
  hibernate-orm:
    dialect: org.hibernate.dialect.PostgreSQL10Dialect
  http:
    port: 8080
  log: # ALL > FINEST > FINER > FINE > CONFIG > INFO > WARNING > SEVERE > OFF
    console:
      async: true
      color: true
      enable: true
      format: "%d{yyyy-MM-dd HH:mm:ss,SSS} |- %-5p in %c:%L{3.} [%t] - %s%e%n"
    level: WARNING
  resteasy:
    path: /api
  smallrye-openapi:
    path: /open-api
  swagger-ui:
    always-include: true
    path: /swagger-ui

"%dev":
  quarkus:
    datasource:
      password: postgres
      url: jdbc:postgresql://localhost:5432/quarkus_web
      username: postgres
    flyway:
      clean-at-start: true
    hibernate-orm:
      log:
        sql: true
      statistics: true
    log:
      category:
        "io.quarkus.arc.processor":
          level: OFF
        "io.quarkus":
          level: INFO
        "org.acme":
          level: CONFIG

"%prod":
  quarkus:
    datasource:
      password: postgres
      url: jdbc:postgresql://localhost:5432/quarkus_web
      username: postgres
    flyway:
      clean-at-start: false
    hibernate-orm:
      database:
        generation: none
      sql-load-script: no-file

"%test":
  quarkus:
    datasource:
      password: postgres
      url: jdbc:postgresql://localhost:5432/quarkus_web
      username: postgres
    flyway:
      clean-at-start: true
    log:
      category:
        "io.quarkus":
          level: WARNING
        "org.acme":
          level: WARNING

有人已经使用过这种方法并且成功了吗?我包括 io.quarkus:quarkus-config-yaml:1.1.0.Final.

One thing that I've noticed is that I can't separate the profiles using --- as I do with Spring Boot. I think I should file an issue for this :thinking_face:

它确实看起来像一个错误,甚至可能是 2,因为考虑到您的配置文件,第二条错误消息看起来不像我期望的那样。

您能否在我们的跟踪器中创建一个错误:https://github.com/quarkusio/quarkus/issues/new?assignees=&labels=bug&template=bug_report.md&title=

如果能提供一个复制器就好了。 AFAICS,Quarkus 根本无法启动,所以您的 pom.xml 以及您使用的各种扩展和配置文件应该足以重现该问题。

原来这不是问题。我只有一个旧的 Gradle 配置; Gradle 版本 1.1.0.Final 的插件改变了一些东西,我只是没有那些。