เมื่อฉันรวบรวมรหัส Scala โดยทำงานsbt compile
, SBTพูดว่า:
$ sbt compile
...
[warn] there were 5 deprecation warnings; re-run with -deprecation for details
...
ฉันจะทำอย่างไร (จากภายใน SBT?)
เมื่อฉันรวบรวมรหัส Scala โดยทำงานsbt compile
, SBTพูดว่า:
$ sbt compile
...
[warn] there were 5 deprecation warnings; re-run with -deprecation for details
...
ฉันจะทำอย่างไร (จากภายใน SBT?)
คำตอบ:
ขณะที่อยู่ใน sbt shell (หากคุณไม่ต้องการเปลี่ยนbuild.sbt
):
$ sbt
> set scalacOptions in ThisBuild ++= Seq("-unchecked", "-deprecation")
> compile
> exit
เนื่องจากการin ThisBuild
, set
ใช้การตั้งค่าเพื่อโครงการย่อยทั้งหมดรวมทั้ง
คุณสามารถเรียกใช้ข้างต้นเป็นคำสั่งเดียวในบรรทัดคำสั่ง
sbt '; set scalacOptions in ThisBuild ++= Seq("-unchecked", "-deprecation") ; compile'
เคล็ดลับคือการใช้;
(เซมิโคลอน) เพื่อแยกคำสั่งและ'
(เห็บ) เพื่อรวม;
คำสั่ง -separated ทั้งหมดเป็นอาร์กิวเมนต์เดี่ยวถึง sbt
in Global
แทนที่จะin ThisBuild
ทำงานร่วมกันได้ดีกับโครงการย่อย - แต่ทำไมจึงเป็นที่นิยมมากกว่า หรือว่าเป็นยัง
scalacOptions := Seq("-unchecked", "-deprecation")
เพิ่มการตั้งค่านี้ใน build.sbt ของคุณและหากคุณมีโครงการหลายโมดูลให้เพิ่มการตั้งค่าของทุกโครงการ
หลายครั้งที่กระแสโซลูชั่นใหม่ ๆ เกิดขึ้น ดังนั้นตอนนี้คุณสามารถเรียกใช้คอมไพเลอร์สกาล่าอีกครั้งโดยไม่ต้องสร้างโครงการใหม่ทั้งหมด
คุณต้องติดตั้งปลั๊กอิน ensime-sbt :
addSbtPlugin("org.ensime" % "sbt-ensime" % "1.0.0")
หลังจากนั้นคุณสามารถใช้ensimeCompileOnly
งานเพื่อรวบรวมไฟล์เดียว SBT อนุญาตการกำหนดค่าการตั้งค่าต่องานดังนั้นคุณสามารถเปลี่ยนแปลงสำหรับงานนั้นเท่านั้น:
set scalacOptions in (Compile, EnsimeKeys.ensimeCompileOnly) += "-deprecation"
ensimeCompileOnly src/main/scala/MyFile.scala
-deprecation
เป็นความคิดที่น่ากลัว Ensime สำหรับรองรับการเพิ่มความคิดเห็นแบบ on-the-fly ในบรรณาธิการ นอกจากนี้ Ensime เองก็มีปัญหามากมายเกี่ยวกับโครงการบางประเภท (โดยเฉพาะอย่างยิ่งที่ใช้มาโครอย่างหนัก)