private void addNormalArtifact( final DependencySet dependencySet, final Artifact depArtifact, final MavenProject depProject, final Archiver archiver, final AssemblerConfigurationSource configSource) throws AssemblyFormattingException, ArchiveCreationException { logger.debug("Adding dependency artifact " + depArtifact.getId() + "."); final AddArtifactTask task = new AddArtifactTask(depArtifact, logger); task.setProject(depProject); task.setModuleProject(moduleProject); task.setModuleArtifact(moduleArtifact); task.setOutputDirectory(dependencySet.getOutputDirectory(), defaultOutputDirectory); task.setFileNameMapping(dependencySet.getOutputFileNameMapping(), defaultOutputFileNameMapping); final int dirMode = TypeConversionUtils.modeToInt(dependencySet.getDirectoryMode(), logger); if (dirMode != -1) { task.setDirectoryMode(dirMode); } final int fileMode = TypeConversionUtils.modeToInt(dependencySet.getFileMode(), logger); if (fileMode != -1) { task.setFileMode(fileMode); } task.setUnpack(dependencySet.isUnpack()); final UnpackOptions opts = dependencySet.getUnpackOptions(); if (dependencySet.isUnpack() && (opts != null)) { task.setIncludes(opts.getIncludes()); task.setExcludes(opts.getExcludes()); } task.execute(archiver, configSource); }
private void addFilteredUnpackedArtifact( final DependencySet dependencySet, final Artifact depArtifact, final MavenProject depProject, final Archiver archiver, final AssemblerConfigurationSource configSource) throws ArchiveCreationException, AssemblyFormattingException { logger.debug( "Adding dependency artifact " + depArtifact.getId() + " after filtering the unpacked contents."); final StringBuilder sb = new StringBuilder() .append(depArtifact.getGroupId()) .append("_") .append(depArtifact.getArtifactId()) .append("_") .append(depArtifact.getVersion()); final String classifier = depArtifact.getClassifier(); if (classifier != null) { sb.append("_").append(classifier); } sb.append(".").append(depArtifact.getType()); final File dir = new File(configSource.getWorkingDirectory(), sb.toString()); if (dir.exists()) { logger.debug( "NOT unpacking: " + depArtifact.getId() + ". Directory already exists in workdir:\n\t" + dir.getAbsolutePath()); } else { dir.mkdirs(); UnArchiver unarchiver; try { unarchiver = archiverManager.getUnArchiver(depArtifact.getFile()); } catch (final NoSuchArchiverException e) { throw new ArchiveCreationException( "Failed to retrieve un-archiver for: " + depArtifact.getId() + ". Dependency filtering cannot proceed.", e); } unarchiver.setDestDirectory(dir); unarchiver.setOverwrite(true); unarchiver.setSourceFile(depArtifact.getFile()); unarchiver.setIgnorePermissions(configSource.isIgnorePermissions()); try { unarchiver.extract(); } catch (final ArchiverException e) { throw new ArchiveCreationException( "Failed to unpack dependency archive: " + depArtifact.getId() + ". Dependency filtering cannot proceed.", e); } } final UnpackOptions opts = dependencySet.getUnpackOptions(); final FileSet fs = new FileSet(); fs.setDirectory(dir.getAbsolutePath()); fs.setDirectoryMode(dependencySet.getDirectoryMode()); fs.setExcludes(opts.getExcludes()); fs.setFileMode(dependencySet.getFileMode()); fs.setFiltered(opts.isFiltered()); fs.setIncludes(opts.getIncludes()); String outDir = dependencySet.getOutputDirectory(); if (outDir == null) { outDir = defaultOutputDirectory; } String filenameMapping = dependencySet.getOutputFileNameMapping(); if (filenameMapping == null) { filenameMapping = defaultOutputFileNameMapping; } filenameMapping = AssemblyFormatUtils.evaluateFileNameMapping( filenameMapping, depArtifact, configSource.getProject(), moduleProject, moduleArtifact, depProject, configSource); final String outputLocation = new File(outDir, filenameMapping).getPath(); fs.setOutputDirectory(outputLocation); fs.setLineEnding(opts.getLineEnding()); fs.setUseDefaultExcludes(opts.isUseDefaultExcludes()); final AddFileSetsTask task = new AddFileSetsTask(fs); task.setProject(depProject); task.setModuleProject(moduleProject); task.setLogger(logger); task.execute(archiver, configSource); }