Quando eu compilo o código Scala, executando sbt compile
, o SBT diz:
$ sbt compile
...
[warn] there were 5 deprecation warnings; re-run with -deprecation for details
...
Como faço isso? (No SBT?)
Quando eu compilo o código Scala, executando sbt compile
, o SBT diz:
$ sbt compile
...
[warn] there were 5 deprecation warnings; re-run with -deprecation for details
...
Como faço isso? (No SBT?)
Respostas:
Enquanto estiver no shell sbt (se você não quiser alterar o seu build.sbt
):
$ sbt
> set scalacOptions in ThisBuild ++= Seq("-unchecked", "-deprecation")
> compile
> exit
Devido a in ThisBuild
, set
aplica as configurações a todos os subprojetos também.
Você também pode executar o procedimento acima como um único comando na linha de comando.
sbt '; set scalacOptions in ThisBuild ++= Seq("-unchecked", "-deprecation") ; compile'
O truque é usar ;
(ponto e vírgula) para separar comandos e '
(ticks) para incluir ;
comandos todos -separados como um único argumento para sbt.
in Global
vez de in ThisBuild
também funciona igualmente bem com subprojetos - mas por que o último é preferido? ou é mesmo?
scalacOptions := Seq("-unchecked", "-deprecation")
Adicione essa configuração ao seu build.sbt e, se você tiver um projeto com vários módulos, adicione-o às configurações de todos os projetos.
Conforme o tempo flui, novas soluções são surgidas. Portanto, agora você pode executar novamente o compilador scala sem emitir a reconstrução do projeto inteiro.
Você precisa instalar o plugin ensime-sbt :
addSbtPlugin("org.ensime" % "sbt-ensime" % "1.0.0")
Depois disso, você poderá usar a ensimeCompileOnly
tarefa para compilar um único arquivo. O SBT permite a configuração de configurações por tarefas, para que você possa alterar apenas essas tarefas:
set scalacOptions in (Compile, EnsimeKeys.ensimeCompileOnly) += "-deprecation"
ensimeCompileOnly src/main/scala/MyFile.scala
-deprecation
é uma péssima idéia. O Ensime é para apoiar anotações on-the-fly em editores. Além disso, o próprio Ensime tem uma série de problemas com alguns tipos de projetos (principalmente aqueles que usam muito as macros).