Bagaimana "menjalankan kembali dengan -deprecation for details" di sbt?

168

Ketika saya mengkompilasi kode Scala, dengan menjalankan sbt compile, SBT mengatakan:

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

Bagaimana aku melakukan itu? (Dari dalam SBT?)

KajMagnus
sumber
2
Pertanyaan serupa (yang mencakup jawaban atas pertanyaan Anda) di stackoverflow.com/questions/9415962/…
Kristian Domagala

Jawaban:

217

sbt shell

Sementara di sbt shell (jika Anda tidak ingin mengubah build.sbt):

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

Karena in ThisBuild, setberlaku pengaturan untuk semua sub-proyek, juga.

Garis komando

Anda juga bisa menjalankan di atas sebagai satu perintah pada baris perintah.

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

Caranya adalah dengan menggunakan ;(titik koma) untuk memisahkan perintah dan '(centang) untuk memasukkan semua ;perintah yang terpisah sebagai argumen tunggal untuk sbt.

Eugene Yokota
sumber
2
@retronym: in Globalalih-alih in ThisBuildjuga bekerja dengan baik dengan sub proyek — tetapi mengapa yang terakhir lebih disukai? atau bahkan?
Erik Kaplun
23
scalacOptions := Seq("-unchecked", "-deprecation")

Tambahkan pengaturan ini ke build.sbt Anda, dan, jika Anda memiliki proyek multi-modul, tambahkan ke pengaturan setiap proyek.

Sandeep Purohit
sumber
-2

Seiring waktu mengalir solusi baru muncul. Jadi, sekarang Anda dapat menjalankan kembali kompilator scala tanpa mengeluarkan seluruh proyek yang dibangun kembali.

Anda perlu menginstal plugin ensime-sbt :

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

Setelah itu Anda bisa menggunakan ensimeCompileOnlytugas untuk mengkompilasi file tunggal. SBT memungkinkan konfigurasi pengaturan setiap tugas, sehingga Anda dapat mengubah hanya untuk tugas-tugas itu:

set scalacOptions in (Compile, EnsimeKeys.ensimeCompileOnly) += "-deprecation"
ensimeCompileOnly src/main/scala/MyFile.scala
ayvango
sumber
1
Menambahkan Ensime hanya untuk mendapatkan -deprecationadalah ide yang buruk. Ensime adalah untuk mendukung anotasi on-the-fly dalam editor. Selain itu, Ensime sendiri memiliki sejumlah masalah dengan beberapa jenis proyek (terutama yang banyak menggunakan makro).
Zac
Plugin ensime adalah pendamping kecil ke server bahasa yang gemuk. Anda bisa menggunakannya secara terpisah. Atau bisa juga menyalin beberapa fungsi darinya.
ayvango