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.