Java Apache Commons配置2-类路径中的多个同名配置文件
我试图做的事情与这个问题完全相同:但是使用ApacheCommonsConfiguration 2 到目前为止,我已经尝试在classpath中创建第一个具有test.properties的maven项目:Java Apache Commons配置2-类路径中的多个同名配置文件,java,configuration,apache-commons-config,Java,Configuration,Apache Commons Config,我试图做的事情与这个问题完全相同:但是使用ApacheCommonsConfiguration 2 到目前为止,我已经尝试在classpath中创建第一个具有test.properties的maven项目: test1=value1 test2=value2 然后,我用另一个test.properties创建了另一个maven项目,如classpath中的: test1=value1 test2=value2 在第二个项目中,我在第一个项目上添加了一个依赖项,并创建了一个main,其中我
test1=value1
test2=value2
然后,我用另一个test.properties创建了另一个maven项目,如classpath中的:
test1=value1
test2=value2
在第二个项目中,我在第一个项目上添加了一个依赖项,并创建了一个main,其中我添加了:
public static void main(String[] args) throws Exception {
Configurations configurations = new Configurations();
PropertiesConfiguration configuration = configurations.properties("test.properties");
System.out.println(configuration.getString("test1"));
}
当我运行main时,我想得到value1
,但我得到null
。显然,我创建PropertiesConfiguration的方式并没有读取第一个模块中的test.properties文件
有什么想法或建议可以实现这一点吗?我通过使用
getClassLoader().getResources(“…”)
获取URL,然后迭代这些URL以加载属性文件,并将它们放入复合配置中
不过,我还是希望ApacheCommonsConfiguration2能够直接处理这个用例
也许存在一种更漂亮的方式
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"));
}
publicstaticvoidmain(字符串[]args)引发异常{
配置=新配置();
CompositeConfiguration CompositeConfiguration=新的CompositeConfiguration();
枚举URL=ConfigurationTest2.class.getClassLoader().getResources(“test.properties”);
while(url.hasMoreElements()){
PropertiesConfiguration PropertiesConfiguration=configurations.properties(url.nextElement());
compositeConfiguration.addConfiguration(属性配置);
}
System.out.println(compositeConfiguration.getString(“test1”);
}
多个test.properties文件是否在不同的包中?不,这是重点。对于这个POC,我将test.properties都放在src/main/resources