protected Archiver createArchiver()

in src/main/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiver.java [266:352]


    protected Archiver createArchiver(
            final String format,
            final boolean includeBaseDir,
            final String finalName,
            final AssemblerConfigurationSource configSource,
            final List<ContainerDescriptorHandler> containerHandlers,
            boolean recompressZippedFiles,
            String mergeManifestMode,
            FileTime outputTimestamp)
            throws NoSuchArchiverException {
        Archiver archiver;

        // one missing alias in plexus-archiver
        if ("tzst".equals(format)) {
            archiver = createTarZstArchiver();
        } else {
            archiver = archiverManager.getArchiver(format);
        }

        if (archiver instanceof TarArchiver) {
            ((TarArchiver) archiver).setLongfile(TarLongFileMode.valueOf(configSource.getTarLongFileMode()));
        }

        if (archiver instanceof WarArchiver) {
            ((WarArchiver) archiver).setExpectWebXml(false);
        }

        if (archiver instanceof AbstractZipArchiver) {
            ((AbstractZipArchiver) archiver).setRecompressAddedZips(recompressZippedFiles);
        }

        final List<FileSelector> extraSelectors = new ArrayList<>();
        final List<ArchiveFinalizer> extraFinalizers = new ArrayList<>();
        if (archiver instanceof JarArchiver) {
            configureJarArchiver((JarArchiver) archiver, mergeManifestMode);

            extraSelectors.add(new JarSecurityFileSelector());

            extraFinalizers.add(new ManifestCreationFinalizer(
                    configSource.getMavenSession(),
                    configSource.getProject(),
                    configSource.getJarArchiveConfiguration()));
        }

        if (configSource.getArchiverConfig() != null) {
            configureArchiver(archiver, configSource);
        }

        String prefix = "";
        if (includeBaseDir) {
            prefix = finalName;
        }

        archiver = new AssemblyProxyArchiver(
                prefix,
                archiver,
                containerHandlers,
                extraSelectors,
                extraFinalizers,
                configSource.getWorkingDirectory());
        if (configSource.isDryRun()) {
            archiver = new DryRunArchiver(archiver, LOGGER);
        }

        archiver.setIgnorePermissions(configSource.isIgnorePermissions());
        archiver.setForced(!configSource.isUpdateOnly());

        // configure for Reproducible Builds based on outputTimestamp value
        if (outputTimestamp != null) {
            archiver.configureReproducibleBuild(outputTimestamp);
        }

        if (configSource.getOverrideUid() != null) {
            archiver.setOverrideUid(configSource.getOverrideUid());
        }
        if (StringUtils.isNotBlank(configSource.getOverrideUserName())) {
            archiver.setOverrideUserName(StringUtils.trim(configSource.getOverrideUserName()));
        }
        if (configSource.getOverrideGid() != null) {
            archiver.setOverrideGid(configSource.getOverrideGid());
        }
        if (StringUtils.isNotBlank(configSource.getOverrideGroupName())) {
            archiver.setOverrideGroupName(StringUtils.trim(configSource.getOverrideGroupName()));
        }

        return archiver;
    }