web-dev-qa-db-fra.com

comparer sbt et Gradle

Je plonge dans Scala et remarque sbt. Je suis assez satisfait de Gradle dans les projets Java/groovy et je sais qu’il existe un plug-in scala pour Gradle.

Quelles pourraient être les bonnes raisons de favoriser sbt par rapport à Gradle dans un projet Scala?

108
Hans Westerbeek

Notez que l’une des principales différences entre SBT et Gradle réside dans sa gestion de la dépendance :

  • SBT : Ivy , avec une révision pouvant être donnée sous forme fixe (1.5.2, par exemple) ou plus récente. (ou dynamique) un.
    Voir " Ivy Dependency "
    Cela signifie que le support du mécanisme "-SNAPSHOT" peut être problématique, même si Mark Harrah détails dans ce fil :

Il est vrai que le cache peut devenir confus, mais il n'est pas vrai qu'Ivy ne comprend pas la résolution des instantanés. Eugene a expliqué ce point dans un autre fil de discussion, peut-être sur la liste des administrateurs. Il y a un problème avec la mise à jour automatique de sbt qui a été traité dans 0.12.

Pour autant que je sache, Ivy ne prend pas en charge la publication d'instantanés comme Maven. Je pense l'avoir déjà dit ailleurs, mais si quelqu'un souhaite améliorer la situation, mon avis est qu'il est préférable de travailler avec l'équipe de Gradle pour réutiliser son code de gestion des dépendances.

Juste pour vous dire que les problèmes liés aux dépendances de capture instantanée Ivy et Maven ont été l'une des raisons pour lesquelles Gradle a finalement remplacé Ivy avec son propre code de gestion de dépendance. C'était une grosse tâche, mais nous a apporté beaucoup de bonté.

This Tweet mentionne que la situation générale pourrait évoluer à l'avenir:

Mark a déclaré par le passé qu'il était intéressé par l'utilisation de Gradle à la place de Ivy pour SBT.

(les deux outils peuvent apprendre l'un de l'autre )

59
VonC

Pour moi, les principales caractéristiques de SBT sont:

  • Compilation rapide (plus rapide que fsc).
  • Compilation/test continu: la commande ~test va recompiler et tester votre projet à chaque fois que vous enregistrez une modification.
  • Compilation et publication croisées, à travers plusieurs versions scala.
  • Récupération automatique des dépendances avec la compatibilité de version correcte scala version.

Les inconvénients sont:

  • Une syntaxe hiéroglyphique qui a tendance à décourager les nouveaux utilisateurs (surtout s'ils viennent de Java)
  • Pas de moyen facile de définir une "tâche": si vous avez besoin d’une procédure de construction spéciale, vous devrez soit trouver un plugin, soit en écrire un vous-même.
53
paradigmatic

sbt est un Scala DSL et pour lui Scala est un citoyen de première classe, il semble donc en principe être un bon choix.

Mais sbt souffre de changements incompatibles majeurs entre les versions, ce qui rend difficile de trouver le plug-in qui fonctionne pour une tâche et de la faire fonctionner.

Personnellement, j’ai abandonné le sbt, car cela causait plus de problèmes qu’il n’en résolvait. En fait, je suis passé à Gradle.

Allez comprendre.

40
Jens Schauder

Je suis assez nouveau dans le domaine des diplômes et très nouveau dans sbt - ce que j’aime vraiment beaucoup dans sbt jusqu’à présent, c’est la console interactive. Cela me permet d'utiliser des commandes telles que "inspecter" pour avoir une meilleure idée de ce qui se passe. Autant que je sache, AFAIK ne fournit pas quelque chose comme cette atm.

4
eugenevd