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"));
}
我想做的是与这个问题完全相同的事情: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"));
}