Welches Build-Tool ist das beste für Scala? Was sind die Vor- und Nachteile von jedem von ihnen? Wie bestimme ich, welche davon in einem Projekt verwendet werden sollen?
Welches Build-Tool ist das beste für Scala? Was sind die Vor- und Nachteile von jedem von ihnen? Wie bestimme ich, welche davon in einem Projekt verwendet werden sollen?
Antworten:
Wir verwenden Maven, um Scala-Projekte bei der Arbeit zu erstellen, da es sich gut in unseren CI-Server integrieren lässt. Wir könnten natürlich einfach ein Shell-Skript ausführen, um einen Build zu starten, aber wir haben eine Reihe anderer Informationen aus Maven, die wir in CI aufnehmen möchten. Das ist ungefähr der einzige Grund, warum ich mir vorstellen kann, Maven für ein Scala-Projekt zu verwenden.
Andernfalls verwenden Sie einfach SBT. Sie erhalten Zugriff auf die gleichen Abhängigkeiten (wirklich das Beste an Maven, IMHO). Sie erhalten auch die inkrementelle Zusammenstellung, die riesig ist. Die Möglichkeit, eine Shell innerhalb Ihres Projekts zu starten, ist ebenfalls großartig.
ScalaMock funktioniert nur mit SBT, und Sie werden das wahrscheinlich eher als eine Java-Spottbibliothek verwenden wollen. Darüber hinaus ist es viel einfacher, SBT zu erweitern, da Sie vollständigen Scala-Code in die Build-Datei schreiben können, sodass Sie nicht die ganze Rigamarole des Schreibens eines Mojo durchlaufen müssen.
Kurz gesagt, verwenden Sie nur SBT, es sei denn, Sie benötigen wirklich eine enge Integration in Ihren CI-Server.
Die Frage läuft Gefahr, nur viele Meinungen zu generieren; Es wäre besser, eine klare Liste der Anforderungen oder eine Beschreibung Ihrer Umgebung, Vorkenntnisse usw. zu haben.
FWIW, es gibt mehr Meinungen in diesem Scala-Mailinglisten-Thread .
Meine 2c sind: Gehen Sie mit sbt, wenn Sie keine spezifischen Anforderungen haben
gen-idea
Aufgabe und öffnen Sie das Projekt erneut: Aktualisierungen abgeschlossen.compile
, test
, run
, doc
, publish-local
, console
) - das ist console
eine der besten Features ist.Einige Leute hassen sbt, weil es Ivy für das Abhängigkeitsmanagement verwendet (ich kann seine Vor- und Nachteile nicht kommentieren, aber meistens ist es kein Problem), andere hassen sbt, weil Sie die Build-Datei in Form von a angeben Scala DSL statt XML. Einige Leute waren enttäuscht, dass sich das Format von sbt von v0.7 auf v0.10 geändert hat, aber natürlich wirkt sich die Migration nicht auf Sie aus, wenn Sie von vorne beginnen.