Apache Commons Configuration2 - 来自类路径的多个同名配置文件

Apache Commons Configuration2 - multiple same name config files from classpath

我想做的是与这个问题完全相同的事情:Using Class.getResourcesAsStream to get Apache Commons Configuration但使用 Apache Commons Configuration 2。

到目前为止,我已经尝试在类路径中使用 test.properties 创建第一个 Maven 项目:

test1=value1

然后,我在类路径中用另一个 test.properties 创建了另一个 Maven 项目:

test2=value2

在第二个项目中,我对第一个项目进行了依赖,并创建了一个主项目,我将 :

public static void main(String[] args) throws Exception {

    Configurations configurations = new Configurations();
    PropertiesConfiguration configuration = configurations.properties("test.properties");
    System.out.println(configuration.getString("test1"));

}

当我运行主要时,我想得到value1但我得到null。显然,我创建 PropertiesConfiguration 的方式不会读取第一个模块中存在的 test.properties 文件。

有什么想法或建议可以实现吗?

我设法通过使用 getClassLoader().getResources("...") 获取 URL 然后迭代那些 URL 来加载属性文件并将它们放在 CompositeConfiguration 中来做到这一点。 =13=]

不过,我希望 Apache Commons Configuration2 直接处理这个用例。

也许存在更漂亮的方法?

public static void main(String[] args) throws Exception {

    Configurations configurations = new Configurations();
    CompositeConfiguration compositeConfiguration = new CompositeConfiguration();

    Enumeration<URL> urls = ConfigurationTest2.class.getClassLoader().getResources("test.properties");
    while(urls.hasMoreElements()) {
        PropertiesConfiguration propertiesConfiguration = configurations.properties(urls.nextElement());
        compositeConfiguration.addConfiguration(propertiesConfiguration);
    }
    System.out.println(compositeConfiguration.getString("test1"));

}