Ich tauche in Scala ein und habe sbt bemerkt. Ich war sehr zufrieden mit Gradle in Java / Groovy-Projekten und ich weiß, dass es ein Scala-Plugin für Gradle gibt.
Was könnten gute Gründe sein, sbt in einem Scala-Projekt Gradle vorzuziehen?
Ich tauche in Scala ein und habe sbt bemerkt. Ich war sehr zufrieden mit Gradle in Java / Groovy-Projekten und ich weiß, dass es ein Scala-Plugin für Gradle gibt.
Was könnten gute Gründe sein, sbt in einem Scala-Projekt Gradle vorzuziehen?
Antworten:
Beachten Sie, dass ein wesentlicher Unterschied zwischen SBT und Gradle das Abhängigkeitsmanagement ist :
Es ist wahr, dass der Cache verwirrt werden kann, aber es ist nicht wahr, dass Ivy das Auflösen von Snapshots nicht versteht. Eugene erklärte diesen Punkt in einem anderen Thread, vielleicht auf der Admin-Liste. Es gibt ein Problem mit der automatischen Aktualisierung von sbt, das in Version 0.12 behoben wurde.
Was Ivy meines Wissens nicht unterstützt, ist die Veröffentlichung von Schnappschüssen in der Art, wie Maven es tut. Ich glaube, ich habe dies an anderer Stelle angegeben, aber wenn jemand die Situation verbessern möchte, ist es meiner Meinung nach am besten, mit dem Gradle-Team zusammenzuarbeiten, um den Code für das Abhängigkeitsmanagement wiederzuverwenden.
Nur um Sie wissen zu lassen, waren Probleme mit Ivy- und Maven-Snapshot-Abhängigkeiten einer der Gründe, warum Gradle Ivy schließlich durch seinen eigenen Abhängigkeitsverwaltungscode ersetzte. Es war eine große Aufgabe, brachte uns aber viel Güte.
In diesem Tweet wird erwähnt, dass sich die gesamte Situation in Zukunft weiterentwickeln könnte:
Mark sagte in der Vergangenheit, dass er daran interessiert sei, Gradle anstelle von Ivy für SBT zu verwenden.
(beide Werkzeuge können voneinander lernen )
Für mich sind die Hauptmerkmale von SBT:
fsc
).~test
kompiliert und testet Ihr Projekt jedes Mal neu, wenn Sie eine Änderung speichern.Die Nachteile sind:
sbt ist ein Scala DSL und dafür ist Scala ein erstklassiger Bürger, daher scheint es im Prinzip gut zu passen.
Sbt leidet jedoch unter größeren inkompatiblen Änderungen zwischen den Versionen, was es schwierig macht, das richtige funktionierende Plugin für eine Aufgabe zu finden und zum Laufen zu bringen.
Ich persönlich habe sbt aufgegeben, da es mehr Probleme verursachte als es löste. Ich bin tatsächlich zu Gradle gewechselt.
Stelle dir das vor.
Sbt und gradle basieren beide auf statisch typisierten Sprachen ... aber sbt hat nur wenige Vorteile: