Como "reexecutar com -deprecation for details" no sbt?

168

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

KajMagnus
fonte
2
Pergunta semelhante (que inclui a resposta à sua pergunta) em stackoverflow.com/questions/9415962/…
Kristian Domagala 6/12

Respostas:

217

sbt shell

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, setaplica as configurações a todos os subprojetos também.

Linha de comando

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.

Eugene Yokota
fonte
2
@retronym: em in Globalvez de in ThisBuildtambém funciona igualmente bem com subprojetos - mas por que o último é preferido? ou é mesmo?
Erik Kaplun
23
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.

Sandeep Purohit
fonte
-2

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 ensimeCompileOnlytarefa 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
ayvango
fonte
1
Adicionar Ensime apenas para obter -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).
Zac
O ensime plugin é um pequeno companheiro para o servidor de idiomas fat. Você pode usá-lo separadamente. Ou poderia apenas copiar algumas funcionalidades dele.
ayvango