Je sors du placard avec ça! Je ne comprends pas SBT. Là, je l’ai dit, aide-moi maintenant s’il te plaît.
Tous les chemins mènent à Rome, et c’est la même chose pour SBT: Pour démarrer avec SBT
il y a SBT
, SBT Launcher
, SBT-extras
, etc., et il existe différentes manières d’inclure et de décider des référentiels. Y a-t-il un «meilleur» moyen?
Je demande parce que parfois je suis un peu perdu. La documentation SBT est très complète et complète, mais je ne sais pas quand utiliser build.sbt
ou project/build.properties
ou project/Build.scala
ou project/plugins.sbt
.
Alors ça devient amusant, il y a Scala-IDE
et SBT
– Quelle est la bonne façon de les utiliser ensemble? Qu’est-ce qui vient en premier, la poule ou l’œuf?
Plus important encore, comment trouvez-vous les référentiels et les versions à inclure dans votre projet? Est-ce que je sors une machette et que je commence à pirater ma route? Je trouve assez souvent des projets qui incluent tout et l’évier de la cuisine, puis je réalise – je ne suis pas le seul à être un peu perdu.
Comme exemple simple, je commence actuellement un tout nouveau projet. Je souhaite utiliser les dernières fonctionnalités de SLICK
et Scala
et cela nécessitera probablement la dernière version de SBT. Quel est le point sain pour commencer, et pourquoi? Dans quel fichier dois-je le définir et à quoi doit-il ressembler? Je sais que je peux faire fonctionner ça, mais j’aimerais vraiment avoir un avis d’expert sur ce qui devrait aller (pourquoi il devrait y avoir un bonus).
J’utilise le SBT
pour de petits projets depuis plus d’un an. J’ai utilisé SBT
puis SBT Extras
(car certains maux de tête disparaissaient comme par magie), mais je ne sais pas pourquoi je devrais utiliser l’un ou l’autre. Je suis juste un peu frustré de ne pas comprendre comment les choses vont bien ensemble ( SBT
et référentiels), et je pense que ça sauvera beaucoup de choses au prochain gars si cela pouvait être expliqué en termes humains.
Plus important encore, comment trouvez-vous les référentiels et les versions à inclure dans votre projet? Est-ce que je sors une machette et que je commence à pirater ma route? Je trouve assez souvent des projets qui incluent tout et l’évier de la cuisine
Pour les dépendances basées sur Scala, je vais avec ce que les auteurs recommandent. Par exemple: http://code.google.com/p/scalaz/#SBT indique d’utiliser:
libraryDependencies += "org.scalaz" %% "scalaz-core" % "6.0.4"
Ou https://github.com/typesafehub/sbteclipse/ a des instructions sur l’endroit où append:
addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.1.0-RC1")
Pour les dépendances basées sur Java, j’utilise http://mvnrepository.com/ pour voir ce qui se passe, puis cliquez sur l’onglet SBT. Par exemple, http://mvnrepository.com/artifact/net.sf.opencsv/opencsv/2.3 indique qu’il faut utiliser:
libraryDependencies += "net.sf.opencsv" % "opencsv" % "2.3"
Ensuite, sortez la machette et commencez à pirater votre chemin. Si vous avez de la chance, vous ne vous retrouvez pas avec des jars qui dépendent de certains jars mais avec des versions incompatibles. Étant donné l’écosystème Java, vous finissez souvent par inclure tout et l’évier de la cuisine, et il vous faudra un certain effort pour éliminer les dépendances ou vous assurer de ne pas manquer les dépendances requirejses.
Comme exemple simple, je commence actuellement un tout nouveau projet. Je souhaite utiliser les dernières fonctionnalités de SLICK et Scala et cela nécessitera probablement la dernière version de SBT. Quel est le point sain pour commencer, et pourquoi?
Je pense que le point sain est de construire l’immunité à la dette graduellement .
Assurez-vous de comprendre:
{}/config:key(for task-key)
SettingKey
de parameters ( SettingKey
, TaskKey
, InputKey
) – lisez la section intitulée “Tâches de tâches” dans http://www.scala-sbt.org/release/docs/Getting-Started/Basic-Def Gardez ces 4 pages ouvertes à tout moment pour pouvoir accéder à différentes définitions et exemples:
Utilisez au maximum show
et inspect
et l’achèvement de l’onglet pour vous familiariser avec les valeurs réelles des parameters, leurs dépendances, les définitions et les parameters associés. Je ne crois pas que les relations que vous découvrirez en utilisant inspect
soient documentées n’importe où. S’il y a un meilleur moyen, je veux le savoir.
La façon dont j’utilise sbt est la suivante:
Je ne prend pas la peine de vérifier les fichiers de projet IDE car ils sont générés par sbt, mais il peut y avoir des raisons pour que vous le fassiez.
Vous pouvez voir un exemple mis en place comme ceci ici .
Utilisez Typesafe Activator, une manière sophistiquée d’appeler sbt, qui vient avec les modèles de projet et les graines: https://typesafe.com/activator
Activator new Fetching the latest list of templates... Browse the list of templates: http://typesafe.com/activator/templates Choose from these featured templates or enter a template name: 1) minimal-java 2) minimal-scala 3) play-java 4) play-scala (hit tab to see a list of all templates)