Ich verwende derzeit SBT, um meine Scala-Projekte zu erstellen, aber kürzlich habe ich von einem anderen Build-Tool namens CBT erfahren.
Ein klarer Vorteil, den ich aus der CBT-Dokumentation ersehen kann, ist, das Schreiben von Build-Dateien ist so gut wie das Schreiben von Scala-Code.
Ich möchte vergleichende Vor- und Nachteile beider Build-Tools wie Leistung, Build-Zeit usw. von jemandem, der es verwendet hat, kennen.
Ich bin der Autor von CBT.
TL; DR CBT ist einfacher und schneller in bestimmten Bereichen, aber jünger und weniger Praxis bewährt.
Die lange Version:
CBT zielt darauf ab, bedeutend einfacher zu sein als SBT, während es im Vergleich zu alten Werkzeugen wie Maven oder Ant ähnliche Vorteile hinsichtlich der Ausdruckskraft bietet. Ich glaube, CBT liefert hier. Es gibt Ihnen auch Typ Sicherheit, wenn Sie auf Task (Methoden) verweisen, wobei in SBT eine Aufgabe möglicherweise in dem Bereich definiert ist, aus dem Sie sie lesen. Performance-weise CBT hat viel schnellere Start-Zeit (ca. 100ms) von Bash und reagiert auf Dateiänderungen sofort über Betriebssystem-Push-Benachrichtigungen statt SBT 0,5s Intervallabfrage.
CBT ist zu diesem Zeitpunkt weniger praxiserprobt als SBT und Sie können einige Ecken und Kanten finden. Insbesondere gibt es momentan sehr wenig Dokumentation, die ich bald ändern möchte. Sie werden auch viel weniger Beispiele für CBT Builds online finden. Es gibt jedoch den Beispielordner im CBT Repo und die Tests. Sie können auch immer noch einige blinde Flecken mit Plugins finden. Alle Linters, Code-Formatierer, Compiler, Publishing-Plugins existieren. Die Packaging- und IDE-Unterstützung muss noch stark verbessert werden. Plugins sind sehr einfach zu schreiben und hinzuzufügen.
Der Quellcode von CBT ist konzeptionell sehr einfach, Anfängerfreundlicher Code, zu dem man leicht beitragen kann, teilweise weil sich CBT nach einer Änderung automatisch neu erstellt, wodurch es sofort verfügbar ist. Die Code-Basis von SBT ist viel schwieriger zu verstehen und ich weiß nicht, wie ich eine lokal geänderte Version verwenden soll, ich nehme Snapshot-Builds vor.
CBT führt derzeit keine Aufgaben aus oder erstellt keine Projekte gleichzeitig. Dies wird möglicherweise nie für Aufgaben innerhalb eines Projekts durchgeführt, startet jedoch wahrscheinlich die gleichzeitige Kompilierung für verschiedene Unterprojekte. SBT parallelisiert Aufgaben so weit wie möglich (oder für möglich gehalten). Ich empfinde die Leistung von CBT nicht als beeinträchtigt, wenn ich es nicht tue. Es ist insgesamt ziemlich bissig.
CBT wurde nicht in größeren Projekten getestet. CBT selbst ist ein Multiprojekt, das mit & gt; 10 Unterprojekte, aber das ist wahrscheinlich das größte, das bisher versucht wurde.
Also jetzt (und das verbessert sich schnell innerhalb von Wochen und Monaten) Wenn Sie CBT wählen, seien Sie bereit, einen guten Teil des Quellcodes zu lesen, benutzen Sie den Gitter-Kanal, um mit uns zu sprechen, verwenden Sie keine IDE oder konfigurieren Sie sie selbst, helfen, kleinere, oberflächliche Usability Bugs zu beheben, die noch niemand zu beheben versucht hat.
Wenn Sie das ausgefeiltere, besser unterstützte, besser dokumentierte und kompliziertere Tool mit mehr kopierbaren und überschaubaren Beispielen und mehr Plugins online möchten, sollten Sie SBT verwenden. Wenn Sie das einfachere, einfach zu bedienende, snappier, fast undokumentierte Tool mit einer Code-Basis möchten, können Sie schnell verstehen, aber dass Sie sich manchmal selbst beheben müssen, gehen Sie jetzt mit CBT.
Es gibt auch dieses neue Video über CBT: Ссылка
Tags und Links scala sbt build-tools