Çoklu Projelerde SBT Test Bağımlılıkları: Test Kodunu Bağımlı Projeler İçin Kullanılabilir Hale Getirin


83

Bazı projelerin birbirine bağımlı olduğu bir SBT çoklu projem var. Bunun gibi:

 lazy val coreProject: Project = Project(
    id = "core-project",
    base = file("./core-project"),
    // other stuff
    ))

  lazy val extensions: Project = Project(
    id = "extensions",
    base = file("./extensions"),
    dependencies = Seq(coreProject)
  )

Şimdi test klasöründeki 'çekirdek' projede bazı test kodum var. Ayrıca alaylar ve test programları gibi şeyler de var. Şimdi bu test araçlarını uzantıların testlerinde kullanmak istiyorum. Bir bağımlılık ilan ettiğim için üretim kodu için bu işe yarıyor. Bununla birlikte, bağımlılık testler için geçerli değil gibi görünüyor. Testleri çalıştırdığımda eksik sınıflar için derleme hatası alıyorum. Bu sınıflar, çekirdek projedeki test kodundandır.

Sbt'ye bağımlılığın test kapsamı için test kodunu da içermesi gerektiğini nasıl söyleyebilirim? Böylece taklitlerimi 'uzatma' projesinin test kodunda yeniden kullanabilir miyim?

Yanıtlar:


92

Şöyle:

dependencies = Seq(coreProject % "compile->compile;test->test")

Bu, daha sonra Başlarken Çoklu Proje kılavuzundaki "Konfigürasyon başına sınıf yolu bağımlılıkları" bölümünde ele alınmıştır .


1
Diğerlerinin burada kafası karışmaması için, bu, proje tanımındaki bağımlılıkları (kütüphane bağımlılıklarını değil) ayarlamanızı önerir.
Ryan Gross

SBT olmayan ninzalar için, lütfen daha fazla yapı dosyası gösterebilir misiniz? Gibi bir tanım lazy val foo = project.settings(...).dependencies(Seq(bar % "compile->compile;test->test"))çalışmıyor. @RyanGross, olur mu?
Abhijit Sarkar

45

Bunu .dependsOn(coreProject % "compile->compile;test->test"), ilk proje bildiriminden sonra da yapabilirsiniz .

lazy val coreProject = Project("core-project")
lazy val extensions = Project("extensions").dependsOn(coreProject % "compile->compile;test->test")

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.