Когда 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, поскольку у меня все еще есть эта зависимость.