Maven 应用程序中的自定义配置文件 (Java/Scala)
Custom configuration files in Maven application (Java/Scala)
我有一个用 Scala 编写并部署为 .jar
的 Maven 项目。该项目具有典型结构:
project-root
|__src
|__main
| |__scala
| |__resources
|
|__test
|__scala
|__resources
我想将应用程序中的许多硬编码值提取到配置文件中。
我可以在任何地方创建一个文本配置文件,从代码中读取它并使用参数,但我正在寻找一个最好的 practice/approach。我想考虑这些事情:
- 有没有一种方法可以让我更改配置值而不必重建
.jar
?那将是非常实用的。
- 文件的最佳位置在哪里?例如创建一个
project-root/src/config
目录并将文件放在那里?
- 选择不同格式有什么特别的原因吗?我会选择 XML,但我已经看到了相当多的 YAML 和 HOCON...
如果您希望能够在不构建 jar 的情况下更改配置值,您将希望您的配置位于工件外部。有一些方法可以修改构建的 jar 的内容,但我认为这不是你想要做的。如果你想拥有配置,你可以随时更改,将它放在你的 jar 之外并在运行时在类路径中引用它。
如果您想将它保留在您的工件上,并在更改值时重建,请将配置文件保留在 src/main/resources 中。 Maven 会自动将它打包到您的 jar 文件中,位于存档的根目录下。
至于格式,这可能是个人喜好。阅读 YAML 通常需要另一个库(例如 snakeyml)才能有效解析,因此如果您试图让您的库依赖于依赖项,则可以查看 .config 或 .properties 文件。否则,XML 和 YAML 总是适合复杂的配置。
我有一个用 Scala 编写并部署为 .jar
的 Maven 项目。该项目具有典型结构:
project-root
|__src
|__main
| |__scala
| |__resources
|
|__test
|__scala
|__resources
我想将应用程序中的许多硬编码值提取到配置文件中。
我可以在任何地方创建一个文本配置文件,从代码中读取它并使用参数,但我正在寻找一个最好的 practice/approach。我想考虑这些事情:
- 有没有一种方法可以让我更改配置值而不必重建
.jar
?那将是非常实用的。 - 文件的最佳位置在哪里?例如创建一个
project-root/src/config
目录并将文件放在那里? - 选择不同格式有什么特别的原因吗?我会选择 XML,但我已经看到了相当多的 YAML 和 HOCON...
如果您希望能够在不构建 jar 的情况下更改配置值,您将希望您的配置位于工件外部。有一些方法可以修改构建的 jar 的内容,但我认为这不是你想要做的。如果你想拥有配置,你可以随时更改,将它放在你的 jar 之外并在运行时在类路径中引用它。
如果您想将它保留在您的工件上,并在更改值时重建,请将配置文件保留在 src/main/resources 中。 Maven 会自动将它打包到您的 jar 文件中,位于存档的根目录下。
至于格式,这可能是个人喜好。阅读 YAML 通常需要另一个库(例如 snakeyml)才能有效解析,因此如果您试图让您的库依赖于依赖项,则可以查看 .config 或 .properties 文件。否则,XML 和 YAML 总是适合复杂的配置。