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?)
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?)
Jawaban:
Sementara di sbt shell (jika Anda tidak ingin mengubah build.sbt
):
$ sbt
> set scalacOptions in ThisBuild ++= Seq("-unchecked", "-deprecation")
> compile
> exit
Karena in ThisBuild
, set
berlaku pengaturan untuk semua sub-proyek, juga.
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.
in Global
alih-alih in ThisBuild
juga bekerja dengan baik dengan sub proyek — tetapi mengapa yang terakhir lebih disukai? atau bahkan?
scalacOptions := Seq("-unchecked", "-deprecation")
Tambahkan pengaturan ini ke build.sbt Anda, dan, jika Anda memiliki proyek multi-modul, tambahkan ke pengaturan setiap proyek.
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 ensimeCompileOnly
tugas 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
-deprecation
adalah 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).