如何在sbt中设置版本号;发布akka http

如何在sbt中设置版本号;发布akka http,sbt,akka,version,Sbt,Akka,Version,我正在尝试使用akka http库的本地副本。我可以使用sbt publishLocal在本地发布它,但我不知道如何更改版本号build.sbt包含一个organization字段,但没有简单的version字段-它似乎是从其他地方生成的,我不知道在哪里。它目前的版本是10.0.5,但是在源代码中对该字符串进行grepping并没有发现任何明显的问题 这似乎是一个简单的问题,但版本定义在哪里?谢谢 (我问这个问题是因为sbt文档告诉我应该将我的本地版本命名为0.1-SNAPSHOT。我认为一定有

我正在尝试使用
akka http
库的本地副本。我可以使用
sbt publishLocal
在本地发布它,但我不知道如何更改版本号
build.sbt
包含一个
organization
字段,但没有简单的
version
字段-它似乎是从其他地方生成的,我不知道在哪里。它目前的版本是
10.0.5
,但是在源代码中对该字符串进行grepping并没有发现任何明显的问题

这似乎是一个简单的问题,但版本定义在哪里?谢谢


(我问这个问题是因为
sbt
文档告诉我应该将我的本地版本命名为
0.1-SNAPSHOT
。我认为一定有一种更简单的方法来实现这一点,而不是禁用自动生成逻辑并将其硬编码到
build.sbt

如果你看:

Akka HTTP版本,对照Akka HTTP的运行时版本进行检查。 从生成的conf文件加载

然后看看:


我假设在生成当前版本后,您应该在文件系统中的某个位置看到一个
akka http version.conf
文件。

是的,它确实生成了一个
akka http version.conf
文件。该文件包含
akka.http.version=“10.0.5+35-d117b194+20170419-2350”
。但我的问题是,它是如何决定将
10.0.5
放在那里的。为了使用我自己版本的库,SBT文档告诉我调用我的版本,比如
0.1snapshot
。我该怎么做?我是否需要拆开自动生成的内容并手动将
版本
放入
build.sbt
,或者有更好的方法吗?如果您尝试在这个build中设置
版本:=1.0
build.sbt
中,会发生什么?是的,这很有效-它会将版本更改为1.0。但是当我尝试将
版本放入这个构建中:=“1.0-SNAPSHOT”
它将无法编译。我以为我应该使用
SNAPSHOT
进行本地开发,或者这是不必要的?@thnd如果您正在进行本地实验,则无所谓。
/**
 * Generate version.conf and akka/Version.scala files based on the version setting.
 */
object Version {

  def versionSettings: Seq[Setting[_]] = inConfig(Compile)(Seq(
    resourceGenerators += generateVersion(resourceManaged, _ / "akka-http-version.conf",
      """|akka.http.version = "%s"
         |""").taskValue,
    sourceGenerators += generateVersion(sourceManaged, _ / "akka" / "http" / "Version.scala",
      """|package akka.http
         |
         |import com.typesafe.config.Config
         |
         |object Version {
         |  val current: String = "%s"
         |  def check(config: Config): Unit = {
         |    val configVersion = config.getString("akka.http.version")
         |    if (configVersion != current) {
         |      throw new akka.ConfigurationException(
         |        "Akka JAR version [" + current + "] does not match the provided " +
         |          "config version [" + configVersion + "]")
         |    }
         |  }
         |}
         |""").taskValue
  ))

  def generateVersion(dir: SettingKey[File], locate: File => File, template: String) = Def.task[Seq[File]] {
    val file = locate(dir.value)
    val content = template.stripMargin.format(version.value)
    if (!file.exists || IO.read(file) != content) IO.write(file, content)
    Seq(file)
  }
}