Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 446
user111724 Avatar asked Jul 22 '14 23:07

user111724


2 Answers

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"
like image 98
devrogs Avatar answered Oct 19 '22 04:10

devrogs


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.

like image 41
lpiepiora Avatar answered Oct 19 '22 02:10

lpiepiora