Skip to content

Commit

Permalink
Add well-known main manifest attributes by default for binary and sou…
Browse files Browse the repository at this point in the history
…rce jars
  • Loading branch information
indrajitr committed Aug 8, 2011
1 parent 10aa2d6 commit 952089b
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 3 deletions.
4 changes: 3 additions & 1 deletion main/Defaults.scala
Expand Up @@ -310,7 +310,9 @@ object Defaults extends BuildCommon
artifactName in GlobalScope :== ( Artifact.artifactName _ )
)
lazy val packageConfig: Seq[Setting[_]] = Seq(
packageOptions in packageBin <<= (packageOptions, mainClass in packageBin) map { _ ++ _.map(Package.MainClass.apply).toList }
packageOptions in packageBin <<= (packageOptions, mainClass in packageBin, name, version, homepage, organization, organizationName) map { (p, main, name, ver, h, org, orgName) =>
p ++ main.map(Package.MainClass.apply) :+ Package.addSpecManifestAttributes(name, ver, orgName) :+ Package.addImplManifestAttributes(name, ver, h, org, orgName) },
packageOptions in packageSrc <<= (packageOptions, name, version, organizationName) map { _ :+ Package.addSpecManifestAttributes(_, _, _) }
) ++
packageTasks(packageBin, packageBinTask) ++
packageTasks(packageSrc, packageSrcTask) ++
Expand Down
17 changes: 15 additions & 2 deletions main/actions/Package.scala
Expand Up @@ -51,10 +51,9 @@ object Package
final class Configuration(val sources: Seq[(File, String)], val jar: File, val options: Seq[PackageOption])
def apply(conf: Configuration, cacheFile: File, log: Logger)
{
import conf._
val manifest = new Manifest
val main = manifest.getMainAttributes
for(option <- options)
for(option <- conf.options)
{
option match
{
Expand Down Expand Up @@ -86,6 +85,20 @@ object Package
if(main.getValue(version) eq null)
main.put(version, "1.0")
}
def addSpecManifestAttributes(name: String, version: String, orgName: String): PackageOption =
{
import Attributes.Name._
val attribKeys = Seq(SPECIFICATION_TITLE, SPECIFICATION_VERSION, SPECIFICATION_VENDOR)
val attribVals = Seq(name, version, orgName)
ManifestAttributes(attribKeys zip attribVals : _*)
}
def addImplManifestAttributes(name: String, version: String, homepage: Option[java.net.URL], org: String, orgName: String): PackageOption =
{
import Attributes.Name._
val attribKeys = Seq(IMPLEMENTATION_TITLE, IMPLEMENTATION_VERSION, IMPLEMENTATION_VENDOR, IMPLEMENTATION_VENDOR_ID)
val attribVals = Seq(name, version, orgName, org)
ManifestAttributes((attribKeys zip attribVals) ++ { homepage map(h => (IMPLEMENTATION_URL, h.toString)) } : _*)
}
def makeJar(sources: Seq[(File, String)], jar: File, manifest: Manifest, log: Logger)
{
log.info("Packaging " + jar.getAbsolutePath + " ...")
Expand Down

0 comments on commit 952089b

Please sign in to comment.