3
  • 爪哇:11.0.7
  • 微航海:2.1.2
  • Micronaut 个人资料:cli-app

我在 cli-app 配置文件中有一个使用 micronaut 框架开发的应用程序。我的应用使用了Hibernate和GORM包,所以在application.yml中有相关配置

在默认配置中,micronaut 从 src/main/resources 加载 application.yml。

如果我希望我的应用程序从以下参数加载 application.yml:

java -Dmicronaut.config=/etc/fooApp/application.yml -jar fooApp.jar

我应该怎么做 ?谢谢

4

1 回答 1

6

micronaut.config.files您可以使用系统属性提供其他配置文件。您可以使用-D或通过导出MICRONAUT_CONFIG_FILES环境变量来定义它。

-D具有系统属性选项的变体

java -Dmicronaut.config.files=/etc/fooApp/application.yml -jar fooApp.jar

具有内联环境变量的变体

MICRONAUT_CONFIG_FILES=/etc/fooApp/application.yml java -jar fooApp.jar

具有导出环境变量的变体

export MICRONAUT_CONFIG_FILES=/etc/fooApp/application.yml

java -jar fooApp.jar

当您使用此技术提供附加配置文件时,所有在 中定义的值/etc/fooApp/application.yml都将优先于在例如classpath:application.yml文件中定义的值。如果要控制特定顺序,则需要定义逗号分隔的配置文件。例如,如果你想提供一个额外的配置文件,但你想获得classpath:application.yml文件的优先级,那么你需要执行以下操作:

java -Dmicronaut.config.files=/etc/fooApp/application.yml,classpath:application.yml -jar fooApp.jar

更多信息:https ://docs.micronaut.io/latest/guide/index.html#propertySource


⚠️注意:如果您想将此/etc/fooApp.application.yml位置硬编码到您的 CLI 应用程序中,您可以执行

System.setProperty("micronaut.config.files", "/etc/fooApp/application.yml");

main()CLI 应用程序类的方法中。但是,ConfigurationException如果文件不存在,您会得到,所以请记住,如果您决定使用这种方法,您可能需要进行一些额外的检查。我在stackoverflow-cli应用程序中做了类似的事情来存储访问令牌并稍后将其注入声明性 HTTP 客户端。

于 2020-11-27T06:54:53.877 回答