build.sbt使用任务更改设置
简短总结:我想使用sbt任务将默认的build.sbt使用任务更改设置,sbt,Sbt,简短总结:我想使用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
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
不会更改其值。我学会了。publishTo
是设置键吗?以后没有办法改变目标吗
背景: 我们希望我们的服务器在任何提交和发布标签上构建快照。我们希望它发布到两个不同的存储库。快照放在一个中,发布在另一个中。有没有办法更改isSnapshot配置 理想情况下,我们希望为CI runner提供它可以运行的不同命令,如:
sbt设置快照发布
sbt设置发布发布
setRelease
和setSnapshot
将设置相应的目的地
sbt发布
true
或false
,然后在一个或另一个存储库中发布。然而,我甚至还没有弄清楚如何修改isSnapshot,而不去碰build.sbt
-文件本身
我已经阅读了一些build.sbt文档,但还没有找到正确的页面
我是否从一个完全错误的角度来解决这个问题?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")
}
请参见此处了解更多详细信息:我所寻找的内容与前面提到的类似
isSnapshot
可以手动设置:
sbt 'set isSnapshot := true' isSnapshot
> ..
> true
此外,正如lev提到的,版本可以设置isSnapshot设置。这基本上导致了相同的解决方案(但这是我缺少的部分) 当将版本号设置为包含关键字
快照
(请不要区分大小写)的内容时,将生成快照
sbt 'set version := "1.0-SNAPSHOT"' isSnapshot
> ..
> true
谢谢@lev的建议。我看到了那篇文章,但是我不知道如何设置isSnapshot.value-您可以详细说明如何配置它(可能没有在build.sbt中硬编码),或者您会使用多个项目配置吗?
isSnapshot
已经存在于sbt中。您可以在这里看到定义:这就是它的初始化方式:因此示例中的代码应该按原样工作
sbt 'set version := "1.0-SNAPSHOT"' isSnapshot
> ..
> true