Когда publish, если в версии есть -SNAPSHOT, я бы хотел заменить его уникальной меткой времени. Я уже сделал это, и он работает, за исключением кросс-здания с +.
Кажется, что параметр version, установленный с меткой времени, очищается, когда версия Scala изменяется для кросс-сборки.
Когда я пытаюсь перекрестно построить publish, я использую следующую команду:
sbt ";stamp-version ;+publish"
Вот код для команды stamp-version:
object TimestampVersion {
  import Version.Snapshot
  lazy val versionSettings = Seq(commands += stampVersion)
  def stampVersion = Command.command("stamp-version") { state =>
    val extracted = Project.extract(state)
    extracted.append(List(version in ThisBuild ~= { ver =>
      val stmp = stamp(ver)
      Logging.info("Stamping version %s".format(stmp))
      stmp
    }), state)
  }
  def stamp(version: String): String = {
    if (version endsWith Snapshot) {
      // we use a dot here to not break rpm versioning rules
      (version stripSuffix Snapshot) + "." + timestamp(System.currentTimeMillis)
    } else {
      version
    }
  }
  def timestamp(time: Long): String = {
    // no delimiter between date & time in order to not break rpm versioning rules
    val sdf = new java.text.SimpleDateFormat("yyyyMMddHHmmss")
    sdf.setTimeZone(TimeZone.getTimeZone("UTC"))
    sdf.format(new Date(time))
  }
}
Есть ли другой способ сохранить мою timestamped версию, к которой могут быть доступны мои кросс-сборки?
РЕДАКТИРОВАТЬ: Чтобы быть ясным, я хочу, чтобы каждая кросс-построенная версия имела одну и ту же метку времени, поэтому, когда я использую ее из другого места, я могу зависеть от этого: "x" %% "y" % "z"
Также было бы лучше, если бы решение могло работать с SBT 0.12.x, поскольку у меня все еще есть эта зависимость.
