gpt4 book ai didi

java - 如何在多个独立的maven项目之间共享configuration.properties文件?

转载 作者:行者123 更新时间:2023-12-02 02:44:54 27 4
gpt4 key购买 nike

我有多个 Maven 项目。其中之一是核心项目,其中包含其他项目使用的许多类。

- Core project
- config.properties file
- SingletonClass
- Project A
- ClassXX
- Project B
- ClassYY

我的核心项目中有一个properties.config 文件。在这个核心项目中,我有一个 Singleton 类,用于加载properties.config 文件元素。

核心项目的单例类使用以下相对路径加载属性文件:

"/config.properties"

这意味着它将在当前工作目录中搜索该文件。这也意味着如果我使用单例类,当前的工作目录将会不同。例如,如果项目 A 使用我的单例类来加载配置值,它将尝试在其根文件夹中查找 config.properties 文件,因此它将无法找到它,因为实际路径不同(核心项目)。

所以我的问题是:

有没有办法在多个 Maven 项目之间共享 config.properties 文件?

编辑:感谢大卫xxx,最好的方法是使用

InputStream is = MySingleton.class.getResourceAsStream("/conf/singleton.properties");

为了让它工作,我还创建了一个资源文件夹(conf)并将其设置在构建路径中。我还必须指定要在我的核心项目 pom.xml 中打包的内容,如下所示:

<resources>
<resource>
<directory>src/conf</directory>
<includes>
<include>*.properties</include>
</includes>
</resource>
</resources>

最佳答案

This mean that it will search this file inside the current working dir. This also mean that if i use the singleton class, the current working dir will be different.

问题在于您用来检索属性文件的方式。
如果您的单例需要作为 JAR 中的依赖项导出,则不必使用当前工作目录来加载属性文件。
属性文件应该位于类路径中,并且单例类可以使用其类加载器来获取资源。

例如,假设属性位于添加到运行时类路径的conf文件夹中,在您的单例类中,您可以编写类似的内容来加载资源:

InputStream is = MySingleton.class.getResourceAsStream("/conf/singleton.properties");

通过这种方式,这两种情况都有效。

关于java - 如何在多个独立的maven项目之间共享configuration.properties文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44748240/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com