Mi piacerebbe avere la seguente configurazione SBT costruzione:Come usare SBT per progetti interdipendenti in diverse configurazioni
object MyBuild extends Build {
lazy val core = Project("core", file("core"))
.dependsOn(testkit % "test")
lazy val testkit = Project("testkit", file("testkit"))
.dependsOn(core % "compile")
}
Quando core
è il modulo principale, tra cui oggetti di dominio, e testkit
è un modulo per il supporto di test codice (builder, matcher, driver di test, ecc .; non i test stessi) che dipende dagli oggetti dominio e altre classi/utilità in core
.
Per questa configurazione SBT dà un errore Cyclic reference
, anche se non c'è davvero una dipendenza ciclica causa dell'utilizzo di differenti configurazioni (core
compilazioni, quindi testkit
compila seconda core
, quindi core
test
viene compilato in relazione ai differenti).
Ho trovato un modo sporco per aggirare questo problema sostituendo uno dei dependsOn
uso unmanagedClasspath
, ad esempio:
.settings(unmanagedClasspath in Compile <+= (packageBin in (LocalProject("core"), Compile)))
Questo si sente come un hack, e rende anche sbt-idea
generare progetti IntelliJ non corretti (tra l'altro cose).
Qualche idea per una soluzione migliore? SBT supporta questa struttura?