วิธี“ เรียกใช้อีกครั้งด้วย -deprecation เพื่อดูรายละเอียด” ใน sbt อย่างไร


168

เมื่อฉันรวบรวมรหัส Scala โดยทำงานsbt compile, SBTพูดว่า:

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

ฉันจะทำอย่างไร (จากภายใน SBT?)


2
คำถามที่คล้ายกัน (ซึ่งรวมถึงคำตอบสำหรับคำถามของคุณ) ที่stackoverflow.com/questions/9415962/…
Kristian Domagala

คำตอบ:


217

sbt shell

ขณะที่อยู่ใน 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


2
@retronym: in Globalแทนที่จะin ThisBuildทำงานร่วมกันได้ดีกับโครงการย่อย - แต่ทำไมจึงเป็นที่นิยมมากกว่า หรือว่าเป็นยัง
Erik Kaplun

23
scalacOptions := Seq("-unchecked", "-deprecation")

เพิ่มการตั้งค่านี้ใน build.sbt ของคุณและหากคุณมีโครงการหลายโมดูลให้เพิ่มการตั้งค่าของทุกโครงการ


-2

หลายครั้งที่กระแสโซลูชั่นใหม่ ๆ เกิดขึ้น ดังนั้นตอนนี้คุณสามารถเรียกใช้คอมไพเลอร์สกาล่าอีกครั้งโดยไม่ต้องสร้างโครงการใหม่ทั้งหมด

คุณต้องติดตั้งปลั๊กอิน 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

1
การเพิ่มความมั่นใจที่จะได้รับ-deprecationเป็นความคิดที่น่ากลัว Ensime สำหรับรองรับการเพิ่มความคิดเห็นแบบ on-the-fly ในบรรณาธิการ นอกจากนี้ Ensime เองก็มีปัญหามากมายเกี่ยวกับโครงการบางประเภท (โดยเฉพาะอย่างยิ่งที่ใช้มาโครอย่างหนัก)
Zac

ปลั๊กอิน ensime เป็นคู่หูขนาดเล็กไปยังเซิร์ฟเวอร์ภาษาไขมัน คุณสามารถใช้มันแยกกัน หรือเพียงแค่คัดลอกฟังก์ชันการทำงานบางอย่างจากมัน
ayvango
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.