¿Cómo "volver a ejecutar con -deprecation para más detalles" en sbt?

168

Cuando compilo el código Scala, al ejecutar sbt compile, SBT dice:

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

¿Cómo puedo hacer eso? (¿Desde dentro de SBT?)

KajMagnus
fuente
2
Pregunta similar (que incluye la respuesta a su pregunta) en stackoverflow.com/questions/9415962/…
Kristian Domagala

Respuestas:

217

sbt shell

Mientras está en sbt shell (si no desea cambiar su build.sbt):

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

Debido a in ThisBuild, setaplica la configuración a todos los subproyectos, también.

Línea de comando

También puede ejecutar lo anterior como un solo comando en la línea de comandos.

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

El truco consiste en usar ;(punto y coma) para separar comandos y '( ;marcas ) para incluir todos los comandos separados como un argumento único para sbt.

Eugene Yokota
fuente
2
@retronym: en in Globallugar de in ThisBuildfuncionar igualmente bien con subproyectos, pero ¿por qué se prefiere este último? o es par?
Erik Kaplun
23
scalacOptions := Seq("-unchecked", "-deprecation")

Agregue esta configuración a su build.sbt y, si tiene un proyecto de varios módulos, agréguelo a la configuración de cada proyecto.

Sandeep Purohit
fuente
-2

A medida que pasa el tiempo, surgen nuevas soluciones. Entonces, ahora podría volver a ejecutar el compilador scala sin emitir la reconstrucción completa del proyecto.

Necesita instalar el complemento ensime-sbt :

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

Después de eso, podría usar la ensimeCompileOnlytarea para compilar un solo archivo. SBT permite la configuración de ajustes por tareas, por lo que puede cambiar solo para esas tareas:

set scalacOptions in (Compile, EnsimeKeys.ensimeCompileOnly) += "-deprecation"
ensimeCompileOnly src/main/scala/MyFile.scala
ayvango
fuente
1
Agregar Ensime solo para obtener -deprecationes una idea terrible. Ensime es para soportar anotaciones sobre la marcha en editores. Además de eso, Ensime en sí tiene una serie de problemas con algunos tipos de proyectos (especialmente aquellos que usan macros en gran medida).
Zac
El complemento ensime es un pequeño compañero del servidor de lenguaje gordo. Podrías usarlo por separado. O simplemente podría copiar alguna funcionalidad de él.
ayvango