Ich habe mehrere SBT 0.13/Play 2.2-Projekte (Websites). Sie sind alle multi-Modul, da sie einige gemeinsame Funktionen teilen. Dies macht ihre Projektkonfigurationsdateien sowohl komplex als auch fast identisch, aber nicht ganz.Wie verwende ich gemeinsame Konfigurationen über SBT (Play) Multi-Projekte?
Ich würde gerne in der Lage sein, so viel wie möglich von diesen Konfigurationsdateien über die Projekte hinweg zu teilen (häufiges Play-Update macht das Aktualisieren von über 5 Websites zu einem königlichen Schmerz, ganz zu schweigen von den fast identischen - aber Entwicklung von Abhängigkeitslisten über die Projekte hinweg).
build.properties und plugins.sbt sind projektübergreifend identisch und können mit einem einfachen Skript überschrieben werden. Groß.
Build.scala ist kniffliger - Ich möchte eine gemeinsame Basisklasse einzuführen, etwa so:
abstract class MyBuildBase extends Build { ... }
dass in Build.scala tun:
object ApplicationBuild extends MyBuildBuild { ... }
Damit dies jeder machen Sinn überhaupt, MyBuildBase.scala muss über Projekte hinweg geteilt werden. Dies kann mit svn: external geschehen, das auf Verzeichnissen operiert. Was bedeutet, dass ich dieses freigegebene Verzeichnis irgendwie zugänglich machen muss, wenn Build.scala kompiliert wird (sonst beklagt sich sbt laut).
Lesen http://www.scala-sbt.org/0.13.0/docs/Detailed-Topics/Classpaths.html und http://www.scala-sbt.org/0.13.0/docs/Getting-Started/Full-Def.html es scheint, wie dies möglich sein sollte.
Es ist jedoch außergewöhnlich unklar für mich, was tatsächlich in die Projekt/Projekt/Build.scala-Datei zu setzen, um dies tatsächlich zu erreichen - ich kann kein Beispiel für finden "eine sbt Build-Datei, die ein bauen soll sbt Build-Datei und einige zusätzliche Quelldateien in den Build ".
Irgendwelche Vorschläge?
Hervorragender Vorschlag. Es stellte sich heraus, dass SVN seit v1.6 mit externen Dateien und nicht nur mit Verzeichnissen umgehen kann, also habe ich es stattdessen so gelöst, wie es in meinem speziellen Fall einfacher war. Ihre Antwort bezieht sich jedoch auf die Frage, die ich tatsächlich gestellt habe, also als solche. – Jxtps