ความหมายของสัญลักษณ์ Build.scala,% และ %%


155

ฉันใหม่เพื่อเล่น! Framework 2.1 (เวอร์ชัน java) และไม่มีประสบการณ์กับสกาล่า ฉันไม่เข้าใจสิ่งที่เป็นและสิ่งที่ไม่%และ%%หมายถึงใน Build.scala ฉัน googled เกี่ยวกับพวกเขา แต่ไม่สามารถค้นหาความหมายของพวกเขา

ในไฟล์ Build.scala ของฉันฉันมี:

"org.hibernate" % "hibernate-entitymanager" % "4.1.0.Final",
"com.typesafe" %% "play-plugins-mailer" % "2.1"

ทำไมบรรทัดแรกใช้สัญลักษณ์% เดียวและสองสัญลักษณ์หนึ่งใช้สองเปอร์เซ็นต์%%? สิ่งที่พวกเขาสำหรับ?

คำตอบ:


184

จากเอกสารอย่างเป็นทางการ:

http://www.playframework.com/documentation/2.1.1/SBTDependencies

รับรุ่นสกาล่าที่ถูกต้องด้วย %%

หากคุณใช้groupID %% artifactID % revisionแทนgroupID % artifactID % revision(ความแตกต่างเป็นสองเท่า%%หลัง groupID) SBT จะเพิ่มเวอร์ชัน Scala ของโครงการของคุณไปยังชื่อสิ่งประดิษฐ์ นี่เป็นเพียงทางลัด

คุณสามารถเขียนสิ่งนี้ได้โดยไม่ต้อง%%:

val appDependencies = Seq(
  "org.scala-tools" % "scala-stm_2.9.1" % "0.3"
)

สมมติว่าscalaVersionสำหรับงานสร้างของคุณเป็น2.9.1สิ่งต่อไปนี้:

val appDependencies = Seq(
  "org.scala-tools" %% "scala-stm" % "0.3"
)

ตามที่คุณเห็นด้านบนหากคุณใช้%%คุณไม่จำเป็นต้องระบุเวอร์ชัน


2
"โครงการของคุณรุ่น Scala" หมายความว่าค่าของ scalaVersionSettingKey
Gordon Gustafson

4
ไม่คิดว่าต้องเพิ่มคำถาม SO แยกต่างหากสำหรับคำถามเพิ่มเติมของฉัน: เมื่อใดฉันจึงไม่ต้องการใช้ %% สำหรับฉันมันดูเหมือนว่า 'ดีกว่า' และควรใช้งานเสมอ ....
Peter Perháč

10
@ PeterPerháčคุณไม่สามารถใช้%%กับสิ่งประดิษฐ์ที่ไม่มีรุ่น Scala (เช่นไลบรารี Java ล้วน)
Toxaris

25

นี่เป็นส่วนหนึ่งของ SBT ที่การเล่นใช้เป็นเครื่องมือสร้าง นี่คือคำชี้แจงการนำเข้า

สัญลักษณ์เปอร์เซ็นต์%เป็นวิธีที่ใช้ในการสร้างการอ้างอิง เครื่องหมายสองเปอร์เซ็นต์%%จะแทรกรุ่น Scala ปัจจุบันซึ่งจะช่วยให้คุณได้รับไลบรารี่ที่ถูกต้องสำหรับเวอร์ชันของสกาล่าที่คุณใช้งานอยู่ นี่คือเพื่อหลีกเลี่ยงการเปลี่ยนไฟล์บิลด์เมื่อคุณอัปเดตสกาล่า

ข้อมูลมากกว่านี้ ที่นี่

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