In SBT mehreren Projekten ist die Haupt-Webanwendung abhängig von einigen Unterprojekten. Als ich an das Stubbed-Modell dachte, würde ich gerne die Stubbed-Modellimplementierung zu einem getrennten Teilprojekt machen.SBT dynamische Projektabhängigkeit basierend auf Befehlszeilenargument
Problem: Die SBT-Projektabhängigkeit ist in SBT vordefiniert. Ich kann es nicht dynamisch abhängig von dem einen oder anderen Teilprojekt per Kommandozeile machen.
Das bedeutet, ich kann kein "release build" haben, um Web-Anwendungen nur von einem real implementierten Modul abhängig zu machen, oder eine "stubbed build", um die Web-App nur vom stubbed-Modul im selben Projektbaum abhängig zu machen .
Die Idee, die Abhängigkeiten zu trennen, ist: Ich möchte nicht die Produktfreigabe haben, die das stubbed Glas einschließt. Das Stub-Jar sollte nur in der Testumgebung verfügbar sein.
Frage: Kann ich die Befehlszeilenargumente verwenden, um SBT mitzuteilen, welches Teilprojekt abhängig sein soll?
Beim Start des Projekts am normalen Anlegesteg: Start, sollte das Hauptprojekt auf regulären Teilprojekt abhängen. Wenn ich die SBT mit einer Befehlszeile wie '-Stub = true' starte, möchte ich, dass das Hauptprojekt die Abhängigkeit von stubbed-Unterprojekten ändert. Da es eine Zeit geben sollte, sollte es entweder im Stub-Modell oder im Stub-Modell sein, der Compiler sollte eine Möglichkeit haben, die Abhängigkeiten zu aktualisieren. Ist es möglich, es in SBT zu tun?
Hier ist ein Beispielprojekt:
lazy val DataTier = Project(
id = "dataTier",
base = file("dataTier"))
}
lazy val StubbedDataTier = Project(
id = "stubbeddataTier",
base = file("stubbeddataTier"))
}
lazy val webApp = Project(
"tiny-web",
file("."))
.aggregate(
DataTier,
StubbedDataTier
)
.dependsOn(
if (getCmdLineArg("Stub") == "true") StubbedDataTier else DataTier
)
Wenn SBT laufen, können wir stubbed Modell tun:
./sbt ~jetty:start -Stub = true
oder in der regulären Modell
./sbt ~jetty:start
Wenn SBT nicht der Fall ist Unterstützen Sie es, ist es möglich, ein neues Feature für SBT so zu werden?
.dependsOn(
if (getCmdLineArg("Stub") == "true") StubbedDataTier else DataTier
)