project/MergeFilesStrategy.scala (18 lines of code) (raw):

import java.io.ByteArrayOutputStream import java.nio.file.Files import org.apache.logging.log4j.core.config.plugins.processor.PluginCache import sbt.File import sbtassembly.MergeStrategy import scala.collection.JavaConverters.asJavaEnumerationConverter class MergeFilesStrategy extends MergeStrategy { override def name: String = "mergeFilesStrategy" override def apply(tempDir: File, path: String, files: Seq[File]): Either[String, Seq[(File, String)]] = { val pluginCache = new PluginCache pluginCache.loadCacheFiles(files.map(_.toURI.toURL).toIterator.asJavaEnumeration) val baos = new ByteArrayOutputStream // avoid worrying about closeable resources pluginCache.writeCache(baos) val mergeFile = MergeStrategy.createMergeTarget(tempDir, path) Files.write(mergeFile.toPath, baos.toByteArray) Right(Seq(mergeFile -> path)) } }