从 Spring Boot Jar 的嵌套 jar 的 Resources 文件夹中读取文件

问题描述 投票:0回答:1

我有一个用例,我需要引用 Spring Boot fat JAR 中各种嵌套 JAR 的配置文件

 public void searchConfFiles() throws Exception {
    PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();

    // Search for all .conf files in the nested JARs
    Resource[] resources = resolver.getResources("classpath:/BOOT-INF/lib/**/*.conf");


    System.out.println("resoucre length"+resources.length);
    for (Resource resource : resources) {
        if (resource.exists()) {
            try (InputStream inputStream = resource.getInputStream()) {
                String content = new String(inputStream.readAllBytes(), StandardCharsets.UTF_8);
                System.out.println("Found .conf file: " + resource.getURI());
                System.out.println(content);
            }
        }
    }
}

即使包含 .conf 文件,它也显示资源长度为 0。enter image description here 当使用 jar 命令、gradlew bootRun 或 maven 命令运行应用程序时,该方法应该有效。

Spring为此提供了解决方案吗?

还有其他选择吗?

java spring spring-boot multi-module uberjar
1个回答
0
投票

这些 jar 位于类路径中,因此您可以使用

resolver.getResources("classpath:/*.conf")

© www.soinside.com 2019 - 2024. All rights reserved.