我们使用SBT和sbt-git从Git版本中派生出我们构建的版本.具体来说,我们使用git describe版本号的输出,并在未标记当前版本时附加"SNAPSHOT"限定符:
val versionRegex = "v([0-9]+.[0-9]+.[0-9]+)-?(.*)?".r
git.useGitDescribe := true
git.baseVersion := "0.0.0"
git.gitTagToVersionNumber := {
case versionRegex(v, "") => Some(v)
case versionRegex(v, "SNAPSHOT") => Some(s"$v-SNAPSHOT")
case versionRegex(v, s) => Some(s"$v-$s-SNAPSHOT")
case _ => None
}
Run Code Online (Sandbox Code Playgroud)
但是,这有时会导致限定符重复,即版本号如"0.0.0-12345678-SNAPSHOT-SNAPSHOT".
我找不到明显的理由.从gitTagToVersionNumber解决问题中删除"-SNAPSHOT" ,但在其他情况下完全删除限定符.
当构建期间Git工作副本中存在未经修改的更改时,sbt-git将附加一个额外的限定符.
默认情况下,此限定符设置为"SNAPSHOT".可以通过uncommittedSignifier设置更改它,例如:
git.uncommittedSignifier := Some("DIRTY")
Run Code Online (Sandbox Code Playgroud)