【发布时间】:2015-03-31 11:55:54
【问题描述】:
我正在努力寻找一个不依赖于 Spring 或类似东西的答案。
我维护了一个 Java 库,它提供了一个远离服务器的抽象,这个库是使用 maven 构建的。为了定义连接细节(目前是硬编码的),我想引入一个 .properties 文件以允许轻松自定义,但是我想在 .jar 本身内提供合理的默认值,但允许人们在必要时覆盖特定属性.
我目前的 maven 结构是这样的......
src/java/com/site/package/cfg/MyLibraryConfig.java
src/resources/com/site/package/cfg/MyLibraryConfig.properties
我目前正在使用 MyLibraryConfig 类中的getResourceAsStream("MyLibraryConfig.properties") 来加载属性文件,并且工作正常。
有没有办法让使用我的 .jar 的人将文件(例如 MyLibraryConfigOverride.properties)放在我的 .jar 之外,然后拾取并使用该文件?我只希望他们覆盖他们想要的特定属性,而不是整个文件。例如,更改服务器主机名但使用所有标准端口是很正常的。
感谢您的帮助。
【问题讨论】:
-
是的,当您加载覆盖的属性时,您将获得另一个输入流,并且您可以从中获取所有属性,类似于您在 MyLibraryConfig 属性中的属性。并发布您可以决定要覆盖的属性和不覆盖的属性。
标签: java maven properties jar overriding