我有一个用例,我需要引用 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。 当使用 jar 命令、gradlew bootRun 或 maven 命令运行应用程序时,该方法应该有效。
Spring为此提供了解决方案吗?
还有其他选择吗?
这些 jar 位于类路径中,因此您可以使用
resolver.getResources("classpath:/*.conf")
。