所以我在我的CI应用程序中找到了一份工作,当应用程序在应用程序上进行开发时,该应用程序会发布到Nexus。
有没有办法使./sbt发布幂等?因为偶尔我们想要因为临时问题而再次运行作业,并且它会出错:&/ p>
[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)
因为我们没有碰到版本号。现在我和哈克一起去了:
./sbt publish || true
因此,作业不会退出1并且CI中出错。还有更好的方法吗?
答案 0 :(得分:14)
您可以使用
isSnapshot := true
这只允许覆盖文件。这种行为似乎可能在未来发生变化。
答案 1 :(得分:0)
您可以随时通过REST API将版本作为构建的一部分引用或查询Nexus,以确定在继续构建之前版本是否已存在。