Добавить временную метку в почтовый индекс, созданный sbt-native-packager

Можно ли добавить отметку времени к сгенерированному имени файла zip, которое вы получаете при выполнении команды dist?

Допустим, мой проект называется «бэкэнд», а текущая версия разработки — 0.2.3-SNAPSHOT. Что я хотел бы сделать, так это выполнить команду dist и получить файл с именем backend-0.2.3-SNAPSHOT-20150506.zip. Однако я хочу добавить отметку времени только при выполнении dist в версии моментального снимка, а не в производственной версии (например, 0.2.3).

Я использую Play 2.4.0-RC1 и sbt 0.13.8.


person ulejon    schedule 06.05.2015    source источник


Ответы (1)


 import com.typesafe.sbt.packager.Keys._

 packageName in Universal := {
   val name = (packageName in Universal).value
   def timestamp = new java.text.SimpleDateFormat("yyyyMMdd") format new java.util.Date()
   if (isSnapshot.value) s"$name-$timestamp" else name
 }

Вот что dist делает с version := "1.0-SNAPSHOT" и version := "1.0" (удаляя некоторый шум):

 [play-scala] $ dist
 [info] Packaging /Users/dnw/Desktop/play-scala/target/scala-2.11/play-scala_2.11-1.0-SNAPSHOT-sources.jar ...
 [info] Wrote /Users/dnw/Desktop/play-scala/target/scala-2.11/play-scala_2.11-1.0-SNAPSHOT.pom
 [info] Packaging /Users/dnw/Desktop/play-scala/target/scala-2.11/play-scala_2.11-1.0-SNAPSHOT-web-assets.jar ...
 [info] Packaging /Users/dnw/Desktop/play-scala/target/scala-2.11/play-scala_2.11-1.0-SNAPSHOT-javadoc.jar ...
 [info] Packaging /Users/dnw/Desktop/play-scala/target/scala-2.11/play-scala_2.11-1.0-SNAPSHOT.jar ...
 [info]
 [info] Your package is ready in /Users/dnw/Desktop/play-scala/target/universal/play-scala-1.0-SNAPSHOT-20150506.zip

 [play-scala] $ set version := "1.0"
 [info] Defining *:version

 [play-scala] $ dist
 [info] Packaging /Users/dnw/Desktop/play-scala/target/scala-2.11/play-scala_2.11-1.0-sources.jar ...
 [info] Wrote /Users/dnw/Desktop/play-scala/target/scala-2.11/play-scala_2.11-1.0.pom
 [info] Packaging /Users/dnw/Desktop/play-scala/target/scala-2.11/play-scala_2.11-1.0-web-assets.jar ...
 [info] Packaging /Users/dnw/Desktop/play-scala/target/scala-2.11/play-scala_2.11-1.0-javadoc.jar ...
 [info] Packaging /Users/dnw/Desktop/play-scala/target/scala-2.11/play-scala_2.11-1.0.jar ...
 [info]
 [info] Your package is ready in /Users/dnw/Desktop/play-scala/target/universal/play-scala-1.0.zip

Обратите внимание, что имена файлов jar не затрагиваются.

person Dale Wijnand    schedule 06.05.2015
comment
Идеальный, красивый и простой ответ. Спасибо! - person ulejon; 06.05.2015