private void shadeJarEntry()

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);
                }
            }
        }
    }