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


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.


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.


-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

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.