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?)
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?)
Respuestas:
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
, set
aplica la configuración a todos los subproyectos, también.
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.
in Global
lugar de in ThisBuild
funcionar igualmente bien con subproyectos, pero ¿por qué se prefiere este último? o es par?
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.
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 ensimeCompileOnly
tarea 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
-deprecation
es 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).