Как изменить универсальное имя zip-файла с помощью sbt-native-packager

Я использую:

  • скала 2.10.3
  • сбт 13.2

с плагином:

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

Я использую universal:packgeBin для создания универсального zip-файла и публикации в репозитории ivy. Я хочу изменить имя zip-файла с project_id_scalaversion_buildVersion.zip на project_id_scalaversion_buildVersion_dist.zip. Как бы я это сделал?


person user111724    schedule 22.07.2014    source источник
comment
Это просто файл. Вы пытались переименовать файл в файле сборки? Вы можете просто использовать renameTo, определенный на java.io.File.   -  person Sudheer Aedama    schedule 23.07.2014


Ответы (2)


Этот ответ основан на версии 1.0.3, которую я использовал, но он также должен применяться к последней версии (1.1.5).

Вы можете назвать свой пакет как хотите. Единственное, что нужно сделать, это добавить следующий параметр в конфигурацию вашего проекта:

Universal / packageName := s"${name.value}_${scalaVersion.value}_${version.value}_dist"
person mateharu    schedule 23.11.2016
comment
Спасибо друг. Это потрясающе! - person Stephen; 02.08.2017

Я думаю, вы не можете легко изменить имя сгенерированного артефакта только для universal:packageBin.

Вы можете глобально изменить имя сгенерированного артефакта, используя artifactName.

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

Однако это также изменит имя сгенерированного файла jar и, возможно, некоторые другие имена сгенерированных артефактов.

Если вы хотите изменить имя только файла, сгенерированного universal:packageBin, вы можете переименовать файл после его создания. Sbt предоставляет вам утилиты, которые делают это довольно легко.

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
}

Теперь вызов Universal/packageBin должен выполнить вашу новую задачу, которая переименует файл после его создания.

person lpiepiora    schedule 23.07.2014
comment
Большое спасибо. Это очень хорошо помогло нам в папке проекта target/universal/. Тем не менее, у нас все еще есть проблема, когда мы пытаемся опубликовать на ivy. Любая идея о том, как решить эту проблему, пожалуйста? Заранее спасибо, Кайван - person user111724; 28.07.2014
comment
@user111724 user111724 на самом деле, когда я думаю об этом, вас волнует имя * .jar или у вас вообще есть банка. Возможно, самым простым рабочим вариантом было бы просто использовать клавишу version. Например. version := "0.1_dist"? Аналогично тому, как работает "0.1-SNAPSHOT". - person lpiepiora; 29.07.2014
comment
это сработало для нас. большое вам спасибо за помощь :) - person user111724; 21.08.2014
comment
Нет проблем, вы можете принять / проголосовать за ответ;) - person lpiepiora; 21.08.2014