SBT仅在版本不存在时发布

Pet*_*ter 12 scala nexus ivy sbt

所以我在我的CI应用程序中找到了一个工作,当一个应用程序开发变更时,它会发布到Nexus.

有没有办法使./sbt发布幂等?因为偶尔会因为临时问题而再次运行作业,因此它会出错:

[16:31:24]java.io.IOException: destination file exists and overwrite == false
[16:31:24]  at org.apache.ivy.plugins.repository.url.URLRepository.put(URLRepository.java:75)
[16:31:24]  at org.apache.ivy.plugins.repository.AbstractRepository.put(AbstractRepository.java:130)
[16:31:24]  at sbt.ConvertResolver$ChecksumFriendlyURLResolver$class.put(ConvertResolver.scala:78)
[16:31:24]  at sbt.ConvertResolver$PluginCapableResolver$1.put(ConvertResolver.scala:103)
[16:31:24]  at org.apache.ivy.plugins.resolver.RepositoryResolver.publish(RepositoryResolver.java:216)
Run Code Online (Sandbox Code Playgroud)

因为我们没有碰到版本号.现在我和哈希一起去:

./sbt publish || true

因此,作业不会退出1并且CI中出错.有没有更好的办法?

use*_*313 15

您可以使用

isSnapshot := true
Run Code Online (Sandbox Code Playgroud)

这只允许覆盖文件.这种行为似乎可能在未来发生变化.