protected void addNonArchiveDependency(
      final Artifact depArtifact,
      final MavenProject depProject,
      final DependencySet dependencySet,
      final Archiver archiver,
      final AssemblerConfigurationSource configSource)
      throws AssemblyFormattingException, ArchiveCreationException {
    final File source = depArtifact.getFile();

    String outputDirectory = dependencySet.getOutputDirectory();

    outputDirectory =
        AssemblyFormatUtils.getOutputDirectory(
            outputDirectory,
            configSource.getProject(),
            moduleProject,
            depProject,
            depProject.getBuild().getFinalName(),
            configSource);

    final String destName =
        AssemblyFormatUtils.evaluateFileNameMapping(
            dependencySet.getOutputFileNameMapping(),
            depArtifact,
            configSource.getProject(),
            moduleProject,
            moduleArtifact,
            depProject,
            configSource);

    String target;

    // omit the last char if ends with / or \\
    if (outputDirectory.endsWith("/") || outputDirectory.endsWith("\\")) {
      target = outputDirectory + destName;
    } else {
      target = outputDirectory + "/" + destName;
    }

    try {
      final int mode = TypeConversionUtils.modeToInt(dependencySet.getFileMode(), logger);
      if (mode > -1) {
        archiver.addFile(source, target, mode);
      } else {
        archiver.addFile(source, target);
      }
    } catch (final ArchiverException e) {
      throw new ArchiveCreationException("Error adding file to archive: " + e.getMessage(), e);
    }
  }