Comment "re-exécuter avec -deprecation pour plus de détails" dans sbt?

168

Lorsque je compile du code Scala, en exécutant sbt compile, SBT dit:

$ sbt compile
...
[warn] there were 5 deprecation warnings; re-run with -deprecation for details
...

Comment je fais ça? (Depuis SBT?)

KajMagnus
la source
2
Question similaire (qui comprend la réponse à votre question) à stackoverflow.com/questions/9415962/…
Kristian Domagala

Réponses:

217

shell sbt

Dans le shell sbt (si vous ne voulez pas changer votre build.sbt):

$ sbt
> set scalacOptions in ThisBuild ++= Seq("-unchecked", "-deprecation")
> compile
> exit

En raison de in ThisBuild, setapplique également les paramètres à tous les sous-projets.

Ligne de commande

Vous pouvez également exécuter ce qui précède en une seule commande sur la ligne de commande.

sbt '; set scalacOptions in ThisBuild ++= Seq("-unchecked", "-deprecation") ; compile' 

L'astuce consiste à utiliser ;(points-virgules) pour séparer les commandes et '( ;cocher ) pour inclure toutes les commandes séparées comme un seul argument de sbt.

Eugene Yokota
la source
2
@retronym: in Globalau lieu de in ThisBuildfonctionne aussi bien avec les sous-projets - mais pourquoi ce dernier est-il préféré? ou est-ce même?
Erik Kaplun
23
scalacOptions := Seq("-unchecked", "-deprecation")

Ajoutez ce paramètre à votre build.sbt et, si vous avez un projet multi-module, ajoutez-le aux paramètres de chaque projet.

Sandeep Purohit
la source
-2

Au fil du temps, de nouvelles solutions émergent. Ainsi, vous pouvez maintenant réexécuter le compilateur scala sans lancer la reconstruction complète du projet.

Vous devez installer le plugin ensime-sbt :

addSbtPlugin("org.ensime" % "sbt-ensime" % "1.0.0")

Après cela, vous pouvez utiliser la ensimeCompileOnlytâche pour compiler un seul fichier. SBT autorise la configuration des paramètres par tâches, vous pouvez donc changer pour ces tâches uniquement:

set scalacOptions in (Compile, EnsimeKeys.ensimeCompileOnly) += "-deprecation"
ensimeCompileOnly src/main/scala/MyFile.scala
ayvango
la source
1
Ajouter Ensime juste pour obtenir -deprecationest une idée terrible. Ensime est destiné à prendre en charge les annotations à la volée dans les éditeurs. En outre, Ensime lui-même a une foule de problèmes avec certains types de projets (notamment ceux qui utilisent fortement des macros).
Zac
Le plugin ensime est un petit compagnon du gros serveur de langage. Vous pouvez l'utiliser séparément. Ou pourrait simplement copier certaines fonctionnalités de celui-ci.
ayvango