我正在尝试在类路径中扫描与特定模式匹配的配置文件。我正在使用corn-cps。
我要查找的文件打包在一个jar中,可以使用java的默认值找到它
MyClass.class.getClassLoader().getResource("jmulticonfig.3.properties")
退货
jar:file:/tmp/testjar.jar!/jmulticonfig.3.properties
我想找到所有的jmulticonfig。*。properties,所以我的corn-cps代码是
List<URL> resources = CPScanner.scanResources(
new ResourceFilter()
.packageName("*")
.resourceName("jmulticonfig.*.properties")
);
当我运行此列表时,将返回一个空列表。
有 Jade 米cps经验的任何人都可以帮助或提出其他建议吗?
编辑:采取@approxiblue的好建议,可以在https://github.com/kanesee/jmulticonfig上找到代码。
请确保将src / main / resources / jmulticonfig-3.jar添加到您的类路径中。它包含jmulticonfig.3.properties,我正在尝试使用corn-cps读取该文件
最佳答案
我认为您在corn-cps库中发现了某种错误,因为如果您调试它们的运行代码的类,则似乎会丢失资源名称。
无论如何,下面的JmultiConfig.getConfig()实现使用正则表达式找到您要搜索的所有资源:
public static synchronized Properties getConfig() {
System.out.println("---");
if (s_props == null) {
List<URL> resources = CPScanner.scanResources(new ResourceFilter().archiveName("*"));
for (URL resource : resources) {
if (resource.getFile().matches(".*jmulticonfig\\..*\\.properties$")) {
System.out.println("*** -> " + resource);
}
}
}
return s_props;
}
可以修改正则表达式以匹配您需要的任何内容。
关于java - 使用corn-cps扫描与通配符模式匹配的配置文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33068391/