Maven应用程序(Java/Scala)中的自定义配置文件
问题描述:
我有一个用Scala编写的Maven项目,并且部署为.jar
。该项目具有典型的结构:Maven应用程序(Java/Scala)中的自定义配置文件
project-root
|__src
|__main
| |__scala
| |__resources
|
|__test
|__scala
|__resources
我在应用程序中有很多硬编码值,我想提取到配置文件。
我可以在任何地方创建一个文本配置文件,从代码中读取它并使用参数,但我正在寻找最佳实践/方法。我想把这件事考虑在内:
- 有没有办法让我可以更改配置值,而不必重建
.jar
?这将是非常实际的。 - 哪里会是该文件的最佳位置?例如,创建一个
project-root/src/config
目录并将文件放在那里? - 关于选择不同格式的任何显着的原因?我会使用XML,但是我已经看到相当多的YAML和HOCON ...
答
如果您希望能够在不构建jar的情况下更改配置值,则需要配置外部到神器。有许多方法可以修改内置的jar的内容,但我不认为这就是你想要做的。如果你想配置你可以随时更改,请将它放在jar外面并在运行时在Classpath中引用它。
如果您想保留在工件上,并在更改值时重新构建,请将配置文件保存在src/main/resources中。 Maven会自动将它打包到您的jar文件中,并放在归档的根目录中。
至于格式,这可能是个人喜好。读取YAML通常需要另外一个库(例如snakeyml)来有效地解析,所以如果您想让库保持依赖关系,可以查看.config或.properties文件。否则,对于复杂的配置,XML和YAML总是很好。