Quelqu’un peut-il s’il vous plaît expliquer la bonne façon d’utiliser SBT?

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 SBTQuelle 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:

  1. format des étendues {}/config:key(for task-key)
  2. les 3 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:

  1. http://www.scala-sbt.org/release/docs/Getting-Started/Basic-Def
  2. http://www.scala-sbt.org/release/docs/Detailed-Topics/index
  3. http://harrah.github.com/xsbt/latest/sxr/Keys.scala.html
  4. http://harrah.github.com/xsbt/latest/sxr/Defaults.scala.html

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:

  1. utilisez sbt-extras – récupérez simplement le script shell et ajoutez-le à la racine de votre projet
  2. Créez un dossier de projet avec un fichier MyProject.scala pour configurer sbt. Je préfère de beaucoup cette approche à l’application build.sbt – sa scala et sa flexibilité
  3. Créez un fichier project / plugins.sbt et ajoutez le plug-in approprié à votre IDE. Sbt-eclipse, sbt-idea ou ensime-sbt-cmd pour pouvoir générer des fichiers de projet pour eclipse, intellij ou ensime.
  4. Lancer sbt à la racine de votre projet et générer les fichiers de projet pour votre IDE
  5. Profit

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)