SBT verwenden, würde Ich mag den folgenden SBT Build-Setup haben:Wie für interdependent Projekte in verschiedenen Konfigurationen
object MyBuild extends Build {
lazy val core = Project("core", file("core"))
.dependsOn(testkit % "test")
lazy val testkit = Project("testkit", file("testkit"))
.dependsOn(core % "compile")
}
Wenn core
das Hauptmodul, einschließlich Domänenobjekte und testkit
ist ein Modul zum Testen Unterstützung Code (Builder, Matcher, Testtreiber, etc; nicht die Tests selbst), die von den Domänenobjekten und anderen Klassen/utils in core
abhängt.
Für diese Einrichtung gibt SBT einen Cyclic reference
Fehler, obwohl es wegen der Verwendung von unterschiedlichen Konfigurationen (core
kompiliert, dann kompiliert testkit
auf core
abhängig, dann core
test
wird in Abhängigkeit von sowohl kompiliert) nicht wirklich eine zyklische Abhängigkeit ist.
fand ich eine schmutzige Art und Weise, um dieses Problem zu erhalten, indem eine der dependsOn
Verwendung unmanagedClasspath
, zum Beispiel zu ersetzen:
.settings(unmanagedClasspath in Compile <+= (packageBin in (LocalProject("core"), Compile)))
Das fühlt sich an wie ein Hack, und macht auch sbt-idea
falsche IntelliJ Projekte generieren (unter anderem Dinge).
Irgendeine Idee für eine bessere Lösung? Unterstützt SBT eine solche Struktur?