简体   繁体   中英

How do I change universal zip file name using sbt-native-packager

I am using:

  • scala 2.10.3
  • sbt 13.2

with plugin:

addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "0.7.3")

I am using the universal:packgeBin to generate the universal zip file and publish to ivy repository. I'd like to change the zip file name from project_id_scalaversion_buildVersion.zip to project_id_scalaversion_buildVersion_dist.zip . How would I do that?

This answer is based on version 1.0.3 that I have used, but it should apply to the latest version (1.1.5) as well.

You can name your package however you want. The only thing to do is to add the following setting to the configuration of your project:

Universal / packageName := s"${name.value}_${scalaVersion.value}_${version.value}_dist"

I think you cannot change the name of the generated artifact just for the universal:packageBin easily.

You can change the name of the generated artifact globally, by using artifactName .

artifactName := { (sv: ScalaVersion, module: ModuleID, artifact: Artifact) =>
  artifact.name + module.revision + "_dist." + artifact.extension
}

This will however also modify also the name of the generated jar file, and perhaps some other names of the generated artifacts.

If you wanted to change the name only of the file generated by the universal:packageBin you could rename the file after it was generated. Sbt gives you utilities which make this rather easy.

Universal / packageBin := {
  val originalFileName = (Universal / packageBin).value
  val (base, ext) = originalFileName.baseAndExt
  val newFileName = file(originalFileName.getParent) / (base + "_dist." + ext)
  IO.move(originalFileName, newFileName)
  newFileName
}

Now invoking the Universal/packageBin should execute your new task, which will rename the file after it's created.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM