簡體   English   中英

版本不會自動增加

[英]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”。

我究竟做錯了什么?

簡短的答案是:

  1. build.sbt文件中刪除/忽略顯式設置版本(即,此語句version := "0.1.0"
  2. 創建一個git標簽以設置所需的版本(以v開頭),例如,參見doc
>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 條規則

  1. 查看版本屬性設置(默認為project.version),並檢查sys.props以查看其是否具有值。 如果是這樣,請使用它。
  2. 否則,請查看項目標簽。 第一個與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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM