我正在尝试在类路径中扫描与特定模式匹配的配置文件。我正在使用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/

10-09 19:43