Khi tôi biên dịch mã Scala, bằng cách chạy sbt compile
, SBT nói:
$ sbt compile
...
[warn] there were 5 deprecation warnings; re-run with -deprecation for details
...
Làm thế nào để làm điều đó? (Từ trong SBT?)
Khi tôi biên dịch mã Scala, bằng cách chạy sbt compile
, SBT nói:
$ sbt compile
...
[warn] there were 5 deprecation warnings; re-run with -deprecation for details
...
Làm thế nào để làm điều đó? (Từ trong SBT?)
Câu trả lời:
Trong khi trong sbt shell (nếu bạn không muốn thay đổi build.sbt
):
$ sbt
> set scalacOptions in ThisBuild ++= Seq("-unchecked", "-deprecation")
> compile
> exit
Do in ThisBuild
, set
cũng áp dụng các cài đặt cho tất cả các dự án phụ.
Bạn cũng có thể chạy ở trên dưới dạng một lệnh trên dòng lệnh.
sbt '; set scalacOptions in ThisBuild ++= Seq("-unchecked", "-deprecation") ; compile'
Thủ thuật là sử dụng ;
(dấu chấm phẩy) để phân tách các lệnh và '
(đánh dấu) để bao gồm tất cả các lệnh được phân tách ;
thành một đối số duy nhất cho sbt.
in Global
thay vì in ThisBuild
cũng hoạt động tốt như nhau với các tiểu dự án, nhưng tại sao cái sau lại được ưa thích hơn? hoặc thậm chí là nó?
scalacOptions := Seq("-unchecked", "-deprecation")
Thêm cài đặt này vào build.sbt của bạn và, nếu bạn có dự án đa mô-đun, hãy thêm nó vào mọi cài đặt của dự án.
Khi thời gian chảy các giải pháp mới được đưa ra. Vì vậy, bây giờ bạn có thể chạy lại trình biên dịch scala mà không cần phát hành lại toàn bộ dự án.
Bạn cần cài đặt plugin sime-sbt :
addSbtPlugin("org.ensime" % "sbt-ensime" % "1.0.0")
Sau đó, bạn có thể sử dụng ensimeCompileOnly
tác vụ để biên dịch tập tin duy nhất. SBT cho phép cấu hình cài đặt cho mỗi tác vụ, do đó bạn chỉ có thể thay đổi cho các tác vụ đó:
set scalacOptions in (Compile, EnsimeKeys.ensimeCompileOnly) += "-deprecation"
ensimeCompileOnly src/main/scala/MyFile.scala
-deprecation
là một ý tưởng khủng khiếp. Đảm bảo là để hỗ trợ chú thích nhanh chóng trong các biên tập viên. Bên cạnh đó, bản thân Sureime có một loạt vấn đề với một số loại dự án (đáng chú ý nhất là những dự án sử dụng macro rất nhiều).