in src/main/java/org/apache/maven/plugins/shade/DefaultShader.java [384:433]
private void shadeJarEntry(
ShadeRequest shadeRequest,
Set<String> resources,
List<ResourceTransformer> transformers,
DefaultPackageMapper packageMapper,
JarOutputStream jos,
Map<String, HashSet<File>> duplicates,
File jar,
Callable<InputStream> inputProvider,
String name,
long time,
int method)
throws Exception {
try (InputStream in = inputProvider.call()) {
String mappedName = packageMapper.map(name, true, false);
int idx = mappedName.lastIndexOf('/');
if (idx != -1) {
// make sure dirs are created
String dir = mappedName.substring(0, idx);
if (!resources.contains(dir)) {
addDirectory(resources, jos, dir, time);
}
}
duplicates.computeIfAbsent(name, k -> new HashSet<>()).add(jar);
if (name.endsWith(".class")) {
addRemappedClass(jos, jar, name, time, in, packageMapper);
} else if (shadeRequest.isShadeSourcesContent() && name.endsWith(".java")) {
// Avoid duplicates
if (resources.contains(mappedName)) {
return;
}
addJavaSource(resources, jos, mappedName, time, in, shadeRequest.getRelocators());
} else {
if (!resourceTransformed(transformers, mappedName, in, shadeRequest.getRelocators(), time)) {
// Avoid duplicates that aren't accounted for by the resource transformers
if (resources.contains(mappedName)) {
logger.debug("We have a duplicate " + name + " in " + jar);
return;
}
addResource(resources, jos, mappedName, inputProvider, time, method);
} else {
duplicates.computeIfAbsent(name, k -> new HashSet<>()).remove(jar);
}
}
}
}