[英]Versioning does not increment automatically
我正在使用https://github.com/sbt/sbt-git來獲得自動版本化的好處,如使用Git進行版本化部分中所述。
我的build.sbt
文件如下所示:
version := "0.1.0"
scalaVersion := "2.12.8"
scalacOptions ++= Seq(
"-encoding", "UTF-8", // source files are in UTF-8
"-deprecation", // warn about use of deprecated APIs
"-unchecked", // warn about unchecked type parameters
"-feature", // warn about misused language features
"-language:higherKinds", // allow higher kinded types without `import scala.language.higherKinds`
"-Xlint", // enable handy linter warnings
"-Xfatal-warnings", // turn compiler warnings into errors
"-Ypartial-unification" // allow the compiler to unify type constructors of different arities
)
scalacOptions in(Compile, console) ~= {
_.filterNot(Set("-Xlint"))
}
libraryDependencies ++= Seq(
"org.typelevel" %% "cats-core" % "1.6.0",
"ch.qos.logback" % "logback-classic" % "1.2.3",
"com.typesafe.scala-logging" %% "scala-logging" % "3.9.2"
)
libraryDependencies ++= Seq(
"org.scalacheck" %% "scalacheck" % "1.14.0" % "test",
"org.scalactic" %% "scalactic" % "3.0.6" % "test",
"org.scalatest" %% "scalatest" % "3.0.6" % "test"
)
libraryDependencies ++= Seq(
"com.typesafe.akka" %% "akka-slf4j" % "2.5.22",
"ch.qos.logback" % "logback-classic" % "1.2.3"
)
libraryDependencies += "com.dimafeng" %% "testcontainers-scala" % "0.25.0" % "test"
enablePlugins(JavaServerAppPackaging)
enablePlugins(DockerPlugin)
enablePlugins(GitVersioning)
dockerExposedPorts := Seq(8080)
git.formattedShaVersion := git.gitHeadCommit.value map { sha =>
s"$sha".substring(0, 7)
}
dockerUpdateLatest := true
dockerAlias := DockerAlias(None, Some("zerocoder"), (packageName in Docker).value, git.gitDescribedVersion.value)
提交后,它不會自動從版本“ 0.1.0”增加到“ 0.2.0”。
我究竟做錯了什么?
簡短的答案是:
build.sbt
文件中刪除/忽略顯式設置版本(即,此語句version := "0.1.0"
) >git tag -a v0.2.0 -m "my version 0.2.0"
然后,您可以通過運行以下命令查看插件設置的版本:
>sbt version
// Displays
// [info] 0.2.0
這里有一些解釋:
因此sbt-git
工作方式是,它為您設置sbt構建的版本(由於運行sbt version
而獲得的sbt version
)。 為此,它遵循一些規則 ,這是第2 條規則 :
- 查看版本屬性設置(默認為project.version),並檢查sys.props以查看其是否具有值。 如果是這樣,請使用它。
- 否則,請查看項目標簽。 第一個與gitTagToVersionNumberSetting匹配的對象用於分配版本。 默認設置是查找以v和數字開頭的標簽,並使用數字作為版本。 如果有多個版本標簽,它將選擇最高的版本。
因此,在您的情況下,因為在build.sbt
project version
顯式設置為0.1.0
,所以運行sbt version
會得到的結果是0.1.0
。 即使進行了一些提交, sbt version
的值仍將為0.1.0
因為一個規則將適用(只要在build.sbt
設置了版本)。 請注意,該插件不會更改該文件中設置的值 ,僅在定義后使用它。
如果要刪除該行 ( version := "0.1.0"
),則將應用規則2,該規則簡而言之就是查找tag
並返回第一個匹配gitTagToVersionNumberSetting
的字符,該字符默認為以v
開頭的字符串然后是一個數字。
因此,從本質v0.2.0
,要使用該插件將您的項目設置為0.2.0
版,您必須在head commit v0.2.0
之上創建一個標簽,(運行git tag -a v0.2.0 -m "my version 0.2.0"
)。
在開發項目時,將添加多個提交,直到您的版本為0.3.0
(或0.2.1
),並且一旦您在最新提交的頂部創建了相應的標記-假設標記為v0.3.0
然后該plugin
會選擇(應用規則2)並將其用於將其設置為項目的版本( sbt version
,您可以通過運行sbt version
看到)。
基本上,這是一個流程,您可以用來使您的項目版本跟隨您的(git) tags
版本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.