【问题标题】:Quarkus startup is complaining about deprecated propertiesQuarkus 初创公司抱怨不推荐使用的属性
【发布时间】:2021-06-30 20:52:14
【问题描述】:

我在 Ubuntu 上启动并运行了一个 quarkus 项目,我的开发环境运行良好。然后我升级到 Mac 并克隆了该项目,运行 mvn quarkus:dev 期望一切正常,但遗憾的是事实并非如此 :(

我遇到了一个讨厌的堆栈跟踪,告诉我 quarkus.datasource.url 和 quarkus.datasource.driver 已被弃用并从 quarkus 版本 1.3 和 1.9 中删除。问题是我不使用这些属性中的任何一个!

这是我的 application.properties

quarkus.datasource.db-kind=postgresql
quarkus.datasource.jdbc.url=jdbc:postgresql://localhost:5432/db?sslmode=disable
quarkus.datasource.username=admin
quarkus.datasource.password=password
quarkus.liquibase.migrate-at-start=true
quarkus.liquibase.change-log=db/changelog/db.changelog-master.xml

这里是 stacktrace

Caused by: io.quarkus.runtime.configuration.ConfigurationException: quarkus.datasource.url and quarkus.datasource.driver have been deprecated in Quarkus 1.3 and removed in 1.9. Please use the new datasource configuration as explained in https://quarkus.io/guides/datasource.
    at io.quarkus.agroal.deployment.AgroalProcessor.build(AgroalProcessor.java:76)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at io.quarkus.deployment.ExtensionLoader$2.execute(ExtensionLoader.java:972)
    at io.quarkus.builder.BuildContext.run(BuildContext.java:277)
    at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
    at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2046)
    at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1578)
    at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1452)
    at java.base/java.lang.Thread.run(Thread.java:829)
    at org.jboss.threads.JBossThread.run(JBossThread.java:479)

我很困惑,因为这是在一台机器上工作,而不是另一台!关于如何通过这个的任何提示/想法?

【问题讨论】:

  • "关于如何通过这个的任何提示/想法?" - "quarkus.datasource.url and quarkus.datasource.driver have been deprecated in Quarkus 1.3 and removed in 1.9. Please use the new datasource configuration as explained in https://quarkus.io/guides/datasource."
  • 您是否 100% 确定没有拾取系统属性、env var、.env 文件、config/application.properties 或自定义位置属性文件?
  • @Turing85 除了显而易见的情况外,假设我不必说明,因为我包含了我的 application.properties 文件并且其中没有显示任何内容!
  • @peterulb 必须验证!
  • @Dan 请记住,在 .env 文件中它被命名为 QUARKUS_DATASOURCE_URL。 Ctrl+F 项目时可能会有所帮助:)

标签: java datasource quarkus


【解决方案1】:

根据 Config Sources,quarkus 会考虑多个来源。主要是

  1. (400) 系统属性

  2. (300) 环境变量

  3. (295) 当前工作目录中的 .env 文件

  4. (260) $PWD/config/application.properties 中的 Quarkus 应用程序配置文件

  5. (250) 类路径中的 Quarkus 应用程序配置文件 application.properties

  6. (100) 类路径中的 MicroProfile Config 配置文件 META-INF/microprofile-config.properties

在smallrye.config.locations 属性或SMALLRYE_CONFIG_LOCATIONS 环境变量定义的位置中找到的其他属性。

当quarkus.kubernetes.app-config-map=<name of the config map containing the configuration> 用作以下选项的单步替代方案时,也会设置此选项:

Quarkus 支持从外部位置传递配置(通过 Smallrye Config)。这通常需要设置额外的环境变量或系统属性。当您需要使用机密或配置映射来进行应用程序配置时,您需要:
定义一个卷
挂载卷
为 SMALLRYE_CONFIG_LOCATIONS 创建一个环境变量

因此,在任何这些情况下,都必须小心,具有更高序数的属性源不会覆盖 application.properties 提供的默认值。

【讨论】:

    猜你喜欢
    • 2021-04-21
    • 1970-01-01
    • 2011-01-27
    • 1970-01-01
    • 1970-01-01
    • 2021-06-10
    • 1970-01-01
    • 2013-01-11
    • 1970-01-01
    相关资源
    最近更新 更多