109 votes

comparaison entre sbt et Gradle

Je me plonge dans Scala et j'ai remarqué sbt. J'ai été assez heureux avec Gradle dans des projets java/groovy, et je sais qu'il y a un plugin Scala pour Gradle.

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

60voto

VonC Points 414372

Notez que l'une des principales différences entre SBT et Gradle est son système de contrôle de la qualité. gestion des dépendances :

  • SBT : Ivy avec une révision qui peut être donnée comme fixe (1.5.2, par exemple) ou comme la plus récente (ou dynamique).
    Voir " Dépendance à l'égard d'Ivy "
    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 s'embrouiller, mais il n'est pas vrai qu'Ivy ne comprend pas la résolution des snapshots. Eugène 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é résolu dans la 0.12.

Ce qu'Ivy ne supporte pas, pour autant que je sache, c'est la publication d'instantanés à la manière de Maven. Je crois que je l'ai déjà dit ailleurs, mais si quelqu'un veut améliorer la situation, je pense qu'il vaut mieux travailler avec l'équipe de Gradle pour réutiliser leur code de gestion des dépendances.

Pour votre information, les problèmes liés aux dépendances instantanées d'Ivy et de Maven ont été l'une des raisons pour lesquelles Gradle a finalement remplacé Ivy par son propre code de gestion des dépendances. C'était une tâche importante, mais qui nous a apporté beaucoup de bienfaits.

Ce tweet mentionne que la situation globale pourrait évoluer à l'avenir :

Mark a dit dans le passé qu'il était intéressé par l'utilisation de Gradle au lieu de Ivy pour SBT.

(les deux outils peuvent apprendre les uns des autres )

53voto

paradigmatic Points 20871

Pour moi, les principales caractéristiques du TAS sont les suivantes :

  • Compilation rapide (plus rapide que fsc ).
  • Compilation/testing continus : la commande ~test recompilera et testera votre projet à chaque fois que vous enregistrerez une modification.
  • Compilation et publication croisées, sur plusieurs versions de Scala.
  • Récupération automatique des dépendances avec la compatibilité correcte de la version de scala.

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 écrire un plugin vous-même.

40voto

Jens Schauder Points 23468

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

Mais sbt souffre de changements majeurs d'incompatibilité entre les versions, ce qui rend difficile de trouver le plugin correct pour une tâche et de le faire fonctionner.

J'ai personnellement abandonné sbt, car il causait plus de problèmes qu'il n'en résolvait. En fait, je suis passé à gradle.

Allez comprendre.

5voto

eugenevd Points 165

Je suis assez novice en matière de gradle et très novice en matière de sbt. Ce que j'aime vraiment dans sbt jusqu'à présent, c'est la console interactive. Elle me permet d'utiliser des commandes comme 'inspect' pour avoir une meilleure idée de ce qui se passe. AFAIK gradle ne fournit pas quelque chose comme ça pour le moment.

-11voto

Saby Points 73

Sbt et gradle, tous deux sont basés sur des langages typés statiquement.... mais sbt a peu d'avantages :

  • meilleur support des plugins, notamment des autoplugins
  • création de tâches et gestion des dépendances entre les tâches
  • sbt convient particulièrement aux projets scala dans le sens où il prend en charge les constructions incrémentales et où la plupart des sbt eux-mêmes sont écrits en scala ainsi que les définitions de construction de sbt.
  • sbt a un support interactif de l'interpréteur de commandes avec de nombreuses tâches intégrées utiles.
  • le cycle de vie par défaut de sbt est assez utile et peut permettre à un novice de démarrer avec un minimum d'effort.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X