2014-12-17 30 views
8

Bu yüzden CI uygulamasında, bir uygulama üzerinde değişiklik yapmak için bir değişiklik olduğunda Nexus'a yayımlanan bir işim var.SBT Yalnızca sürüm mevcut değilken yayınla

./sbt idempotent yayımlamak yapmak için bir yolu var mı? Çünkü bazen biz çünkü geçici sorun nedeniyle işi yeniden çalıştırın istiyor ve onunla dışarı hata edeceğiz: Biz sürüm numarasını çarptı ettik Çünkü

[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) 

. Şu anda bir hacky ile gidiyorum:

./sbt publish || true

Yani CI iş doesnt çıkış 1 ve hata. Daha iyi bir yolu var mı?

+0

IMHO, bu çok zarif bir çözüm olurdu. Çapraz derleme yaparken ve atlanan diğer sürümü yayınlamanız gerektiğinde SBT yapılandırmamla sıklıkla bir hata buluyorum. Scala 2.11 için eser yayınlamaktan kurtulmak istemiyorum çünkü sadece 2.10 zaten var. –

cevap

0

Ya hep sürümü zaten bir yapı geçmeden önce varsa anlamaya REST API aracılığıyla yapı veya sorgu Nexus parçası olarak versiyonunu ref başladı.

11

Sen

isSnapshot := true 

Bu yalnızca bir dosyanın üzerine yazıldığını sağlar kullanabilirsiniz. Gelecekte bu davranış değişebilir gibi görünüyor.

+0

20160816'da bu geçici özellik var, bu yüzden normalde kullanmanın güvenli olduğuna inanıyorum. – pabloa98