diff options
author | Raphael Jolly <rjolly@users.sourceforge.net> | 2016-05-20 20:09:53 +0200 |
---|---|---|
committer | Raphael Jolly <rjolly@users.sourceforge.net> | 2016-05-21 10:40:07 +0200 |
commit | 206a657225f16c0fa847f0b2abaddc17b8d945d7 (patch) | |
tree | 2f6c94d4f9507e276a830f900da2121d754db2ff /project/Osgi.scala | |
parent | a412ea04ba0ba41dbac469b89e1412f0c56fce3f (diff) | |
download | scala-206a657225f16c0fa847f0b2abaddc17b8d945d7.tar.gz scala-206a657225f16c0fa847f0b2abaddc17b8d945d7.tar.bz2 scala-206a657225f16c0fa847f0b2abaddc17b8d945d7.zip |
Jarlist scala-library in build.sbt
Diffstat (limited to 'project/Osgi.scala')
-rw-r--r-- | project/Osgi.scala | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/project/Osgi.scala b/project/Osgi.scala index 4456c94190..d780be2f78 100644 --- a/project/Osgi.scala +++ b/project/Osgi.scala @@ -1,6 +1,7 @@ import aQute.lib.osgi.Builder import aQute.lib.osgi.Constants._ import java.util.Properties +import java.util.jar.Attributes import sbt._ import sbt.Keys._ import scala.collection.JavaConversions._ @@ -16,6 +17,7 @@ object Osgi { val bundleName = SettingKey[String]("osgiBundleName", "The Bundle-Name for the manifest.") val bundleSymbolicName = SettingKey[String]("osgiBundleSymbolicName", "The Bundle-SymbolicName for the manifest.") val headers = SettingKey[Seq[(String, String)]]("osgiHeaders", "Headers and processing instructions for BND.") + val jarlist = SettingKey[Boolean]("osgiJarlist", "List classes in manifest.") def settings: Seq[Setting[_]] = Seq( bundleName := description.value, @@ -33,8 +35,9 @@ object Osgi { "-eclipse" -> "false" ) }, + jarlist := false, bundle <<= Def.task { - bundleTask(headers.value.toMap, (products in Compile in packageBin).value, + bundleTask(headers.value.toMap, jarlist.value, (products in Compile in packageBin).value, (artifactPath in (Compile, packageBin)).value, Nil, streams.value) }, packagedArtifact in (Compile, packageBin) <<= (artifact in (Compile, packageBin), bundle).identityMap, @@ -47,7 +50,7 @@ object Osgi { ) ) - def bundleTask(headers: Map[String, String], fullClasspath: Seq[File], artifactPath: File, + def bundleTask(headers: Map[String, String], jarlist: Boolean, fullClasspath: Seq[File], artifactPath: File, resourceDirectories: Seq[File], streams: TaskStreams): File = { val log = streams.log val builder = new Builder @@ -62,6 +65,12 @@ object Osgi { builder.getWarnings.foreach(s => log.warn(s"bnd: $s")) builder.getErrors.foreach(s => log.error(s"bnd: $s")) IO.createDirectory(artifactPath.getParentFile) + if (jarlist) { + val entries = jar.getManifest.getEntries + for ((name, resource) <- jar.getResources if name.endsWith(".class")) { + entries.put(name, new Attributes) + } + } jar.write(artifactPath) artifactPath } |