in src/main/java/org/apache/maven/plugins/shade/filter/MinijarFilter.java [174:201]
private boolean removeServicesFromDir(Clazzpath cp, Set<Clazz> neededClasses, String fileName) {
final File servicesDir = new File(fileName, "META-INF/services/");
if (!servicesDir.isDirectory()) {
return false;
}
final File[] serviceProviderConfigFiles = servicesDir.listFiles();
if (serviceProviderConfigFiles == null || serviceProviderConfigFiles.length == 0) {
return false;
}
boolean repeatScan = false;
for (File serviceProviderConfigFile : serviceProviderConfigFiles) {
final String serviceClassName = serviceProviderConfigFile.getName();
final boolean isNeededClass = neededClasses.contains(cp.getClazz(serviceClassName));
if (!isNeededClass) {
continue;
}
try (BufferedReader configFileReader =
new BufferedReader(new InputStreamReader(new FileInputStream(serviceProviderConfigFile), UTF_8))) {
// check whether the found classes use services in turn
repeatScan |= scanServiceProviderConfigFile(cp, configFileReader);
} catch (final IOException e) {
log.warn(e.getMessage());
}
}
return repeatScan;
}