【问题标题】:Micronaut + Maven - Environment variablesMicronaut + Maven - 环境变量
【发布时间】:2021-03-08 16:30:33
【问题描述】:

我正在开发一个 Micronaut + Maven 项目。 我需要参数化我的 application.yml 的一些值,例如密码和连接字符串,以避免提交它们。

我知道值可以这样参数化:

secret-value: '${SECRET_VALUE}'

但除了在 .bashrc 或 .profile 或 .envoirment 脚本文件中设置 bash 值外,我找不到任何其他方法来设置 SECRET_VALUE

我想以某种方式使用 .env 文件,以便在 git repo 中提交 .env.example 文件。

有什么想法吗?

【问题讨论】:

  • 听起来您想在.env 文件中定义值,然后在application.yml 中引用这些值。为什么将它们放在特定于环境的yml 文件中不起作用(application-qa.ymlapplication-customersite.yml 等)并在激活相应环境的情况下运行应用程序?你还说你想“避免犯下他们”,然后说你想要...in order to commit a .env.example file in git repo.。您是否试图避免将这些值存储在 Git 中?
  • 是的,正如我所回答的,我失去了问题的重点。在 .env.example 中,您应该只插入非敏感数据,并将其替换为示例数据。因此,当您需要设置新环境时,只需将 .env.example 复制到新的 .env 中,然后替换假数据和错误数据,就可以开始了。为了避免健忘,这是必要的。

标签: java kotlin micronaut dotenv


【解决方案1】:

根据 maven-resource-plugin 文档: https://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html

您可以在 pom 文件的 filters 标签中添加一个过滤器文件。

请参阅上述文档中的we can separate "your.name" from the POM by specifying a filter file my-filter-values.properties containing:

【讨论】:

  • 这是否有助于在 application.yml 中填充类似 secret-value: '${SECRET_VALUE}' 的内容,以便在运行时读取?
【解决方案2】:

我可能已经失去了问题的重点。 解决方案是简单地创建一个具有所需值的 .env 文件,然后使用类似的东西运行应用程序

dotenv run ./mvnw mn:run.

关于@yunandtidus 解决方案: 这仅适用于“固定”变量,例如应用程序名称,因为 pom 值在环境之间共享(假设我们有一个 application-dev.yml 和一个 application-prod.yml)。 请记住,与 .env 不同,pom.xml 必须被提交,就像您拥有的任何 application.yml 一样。

【讨论】:

  • “因为 pom 值在环境之间共享” - 为什么在运行的应用程序中需要 pom 值?
  • Idk,也许得到类似当前版本的东西可能会有用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-04
  • 2011-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-01
相关资源
最近更新 更多