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?)


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.


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.


-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

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.