2012-10-02 17 views
8

Tümünün ortak bir kurulumu olan birden çok SBT projem var - ör. çoklu modül, yayınlamaBilgiler vb. ayarlarıSBT ortak yapı ayarları

Ortak bir ör. Projelerin her birinden ortak olabileceği CommonBuild sınıfı? Örneğin:

trait CommonBuild { 
    val publishSettings = Seq(
    publishTo := Some("", ""), 
    credentials += ... 
) 

    def module(name: String) (
    settings: Seq[Setting[_]], 
    projectId: String = PROJECT + "-" + name, 
    dirName: String = name, 
    srcPath: String = PROJECT + name 
    ) = Project(projectId, file(dirName), settings = (buildSettings ++ srcPathSetting(projectId, srcPath)) ++ publishSettings ++ settings) 

} 

Şimdi bir proje yapı tarafından kullanılabilir:

object ProjABuild extends CommonBuild { 
    // use CommonBuild methods/vals 
} 

object ProjBBuild extends CommonBuild { 
    // use CommonBuild methods/vals 
} 
+0

Bu projeler Sbt projelerini tahsis ediyor mu, yoksa Sbt alt projeleri mi? –

+0

Proje A ve B, alt projeler/modüller değil, Sbt projeleridir. – Dzhu

+1

belki de soru, build.scala'da harici kütüphane kodunun nasıl kullanıldığına dair özel bir durum mu? Bu senin amacını yerine getirecek, değil mi? – Owen

cevap

3

Ben de bunu yapmak istedim. Önemli olarak, ortak kurulumun alt projelerin bağlı olduğu kendi projesinde yaşaması gerekir, böylece ortak kurulumda yapılan bir değişiklik tüm alt projelerde otomatik olarak yürürlüğe girer. Bunu başarmanın tek yolu ortak şeyleri bir SBT eklentisine koymaktır.

iesl-sbt-base adı verilen böyle bir eklenti yazdım. Projeniz için Build.scala dosyasının çok kısa olacağı şekilde boilerplate yığını sağlar. Bu sağlar:

  • Çözümleyici yapılandırma
  • geçişli bağımlılık anlık sürümlerinden
  • Opsiyonel koruma ne kullanıldığına otomatik güncellenmesi
  • Clarity ile
  • Basitleştirilmiş bağımlılık çözünürlüğü
  • Temizlenmiş-up giriş konfigürasyonu

Ayrıntılar için lütfen https://github.com/iesl/iesl-sbt-base'a bakın. Muhtemelen kurulumuma özgü şeyleri (ör. Özellikle çözümleyici URL'ler) değiştirmek için bunu çatallandırmak isteyeceksiniz. Talep varsa, nasıl daha kolay yapılandırılabileceğini düşünebilirim.

+0

Thats teşekkürler David! – Dzhu