简短摘要:我想通过sbt任务更改默认的publishTo
,但仅在某些情况下。我正在尝试做类似的事情:
val setSnapshot = taskKey[Unit]("changeRepo")
setSnapshot := {
System.out.println(publishTo.value)
publishTo in ThisBuild := Some("test" at "snapshot.myrepository")
System.out.println(publishTo.value)
}
name := "Hello"
version := "1.0"
scalaVersion := "2.10.2"
publishTo in ThisBuild := Some("test" at "release.myrepository")
但是,publishTo
不会改变其值。我学会了that setting keys
are assigned only once。 publishTo
是设置键吗?以后没有办法更改目标吗?
上下文:
我们希望我们的服务器在任何提交和标签发布上构建快照。我们希望它发布到两个不同的存储库。快照合而为一,然后再发布。有没有办法改变isSnapshot的配置?
理想情况下,我们希望为CI运行器提供可以运行的不同命令,例如:
sbt setSnapshot publish
sbt setRelease publish
setRelease
和setSnapshot
将设置相应的目的地。
sbt publish
或者可以只使用发布,然后检查“ isSnapshot”是
true
还是false
,然后在一个或另一个存储库中发布。但是,我什至没有想出如何在不触摸build.sbt
文件本身的情况下修改isSnapshot。
我已经阅读了一些build.sbt文档,但是我还没有找到正确的页面...
我是从完全错误的角度来解决这个问题吗?
答案 0 :(得分:1)
sbt文档中有一个示例,说明如何发布到单独的快照存储库:
publishTo := {
val nexus = "https://my.artifact.repo.net/"
if (isSnapshot.value)
Some("snapshots" at nexus + "content/repositories/snapshots")
else
Some("releases" at nexus + "service/local/staging/deploy/maven2")
}
有关更多详细信息,请参见此处:https://www.scala-sbt.org/1.x/docs/Publishing.html#Define+the+repository
答案 1 :(得分:0)
我正在寻找的东西就像提到的here
可以手动设置 isSnapshot
:
sbt 'set isSnapshot := true' isSnapshot
> ..
> true
此外,随着lev的出现,该版本可以设置isSnapshot设置。基本上可以得到相同的解决方案(但这是我缺少的部分)。
sbt 'set version := "1.0"' isSnapshot
> ..
> false
在将版本号设置为包含关键字SNAPSHOT
的内容时(请注意区分大小写)会生成快照
sbt 'set version := "1.0-SNAPSHOT"' isSnapshot
> ..
> true