gpt4 book ai didi

git - 设置sbt发布到基于git分支的artifactory

转载 作者:太空狗 更新时间:2023-10-29 12:53:53 24 4
gpt4 key购买 nike

我想设置一个 sbt 项目,以便它可以基于 (git) 分支发布到适当的 Artifactory 存储库。

this question 提出的解决方案建议在 build.sbt 文件中对存储库进行硬编码。

但是,我希望主分支使用相同的 build.sbt 文件发布到“releases”,另一个分支发布到“snapshots”。

理想情况下,我想要以下内容:

val gitBranch = taskKey[String]("Determines current git branch")               
gitBranch := Process("git rev-parse --abbrev-ref HEAD").lines.head

publishTo := {
val myArtifactory = "http://some.where/"
if (gitBranch.value == "master")
Some("releases" at myArtifactory + "releases")
else
Some("snapshots" at myArtifactory + "snapshots")
}

但这会产生“错误:设置不能依赖于任务”。

最佳答案

一个近似的解决方案是使用 sbt-release 插件,然后使用 isSnapshot(这是一个设置)来选择存储库。

原始问题的解决方案是简单地使 gitBranch 成为一个设置:

val gitBranch = settingKey[String]("Determines current git branch")               

代替

val gitBranch = taskKey[String]("Determines current git branch")     

请注意,设置仅在 sbt session 开始时计算一次,因此如果 session 中存在任何分支切换,则此设置不适用。

因此,整个代码片段将变为:

val gitBranch = settingKey[String]("Determines current git branch")
gitBranch := Process("git rev-parse --abbrev-ref HEAD").lineStream.head

publishTo := {
val myArtifactory = "http://some.where/"
if (gitBranch.value == "master")
Some("releases" at myArtifactory + "releases")
else
Some("snapshots" at myArtifactory + "snapshots")
}

关于git - 设置sbt发布到基于git分支的artifactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37144050/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com