如何在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)
}
}