【发布时间】:2015-02-16 06:59:54
【问题描述】:
所以我在我的 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)
因为我们没有修改版本号。现在我要和一个hacky一起去:
./sbt publish || true
所以作业不会退出 1 并在 CI 中出错。有没有更好的办法?
【问题讨论】:
-
恕我直言,这将是一个非常优雅的解决方案。我经常在交叉编译时发现我的 SBT 配置存在一些错误,并且需要发布被跳过的其他版本。我不想仅仅因为 Scala 2.10 已经存在而放弃发布 Scala 2.11 的工件。