ฉันกำลังดำน้ำใน Scala และสังเกตเห็น sbt ฉันค่อนข้างพอใจกับ Gradle ในโปรเจ็กต์ java / groovy และฉันรู้ว่ามีปลั๊กอิน scala สำหรับ Gradle
อะไรคือเหตุผลที่ดีที่จะชอบ sbt มากกว่า Gradle ในโครงการ Scala
ฉันกำลังดำน้ำใน Scala และสังเกตเห็น sbt ฉันค่อนข้างพอใจกับ Gradle ในโปรเจ็กต์ java / groovy และฉันรู้ว่ามีปลั๊กอิน scala สำหรับ Gradle
อะไรคือเหตุผลที่ดีที่จะชอบ sbt มากกว่า Gradle ในโครงการ Scala
คำตอบ:
โปรดทราบว่าความแตกต่างที่สำคัญอย่างหนึ่งระหว่าง SBT และ Gradle คือการจัดการการพึ่งพา :
เป็นเรื่องจริงที่แคชอาจสับสนได้ แต่ไม่เป็นความจริงที่ Ivy ไม่เข้าใจการแก้ไขสแนปชอต ยูจีนอธิบายประเด็นนี้ในหัวข้ออื่นบางทีอาจอยู่ในรายชื่อผู้ดูแลระบบ มีปัญหากับการอัปเดตอัตโนมัติของ sbt ที่ได้รับการแก้ไขใน 0.12
สิ่งที่ Ivy ไม่สนับสนุนเท่าที่ฉันรู้คือการเผยแพร่ภาพรวมในลักษณะที่ Maven ทำ ฉันเชื่อว่าฉันได้ระบุสิ่งนี้ไว้ที่อื่น แต่ถ้าใครต้องการปรับปรุงสถานการณ์ความคิดเห็นของฉันคือความพยายามที่ดีที่สุดคือการทำงานร่วมกับทีม Gradle เพื่อนำรหัสการจัดการการพึ่งพากลับมาใช้ใหม่
เพียงเพื่อแจ้งให้คุณทราบปัญหาเกี่ยวกับการพึ่งพาสแน็ปช็อตของ Ivy และ Maven เป็นสาเหตุหนึ่งที่ทำให้ Gradle แทนที่ Ivy ด้วยรหัสการจัดการการพึ่งพาของตัวเองในที่สุด มันเป็นงานใหญ่ แต่ทำให้เรามีความดีมากมาย
ทวีตนี้ระบุว่าสถานการณ์ทั้งหมดสามารถพัฒนาได้ในอนาคต:
มาร์คบอกในอดีตว่าเขาสนใจที่จะใช้ Gradle แทน Ivy สำหรับ SBT
(เครื่องมือทั้งสองสามารถเรียนรู้จากกันและกัน )
สำหรับฉันคุณสมบัติที่สำคัญของ SBT คือ:
fsc
)~test
จะคอมไพล์ใหม่และทดสอบคุณฉายทุกครั้งที่คุณบันทึกการแก้ไขข้อเสียคือ:
sbt เป็น Scala DSL และ Scala เป็นพลเมืองชั้นหนึ่งดังนั้นโดยทั่วไปแล้วดูเหมือนว่าจะเข้ากันได้ดี
แต่ sbt ต้องทนทุกข์ทรมานจากการเปลี่ยนแปลงที่สำคัญระหว่างเวอร์ชันที่เข้ากันไม่ได้ซึ่งทำให้ยากที่จะหาปลั๊กอินที่ใช้งานได้สำหรับงานและทำให้มันใช้งานได้
ฉันยอมแพ้กับ sbt เป็นการส่วนตัวเนื่องจากมันทำให้เกิดปัญหามากกว่าที่จะแก้ไขได้ ฉันเปลี่ยนไปใช้ gradle จริงๆ
ไปคิด
ฉันค่อนข้างใหม่สำหรับ gradle และใหม่มากสำหรับ sbt - สิ่งที่ฉันชอบเกี่ยวกับ sbt จนถึงตอนนี้คือคอนโซลแบบโต้ตอบ ช่วยให้ฉันใช้คำสั่งเช่น 'ตรวจสอบ' เพื่อให้เข้าใจสิ่งที่เกิดขึ้นได้ดีขึ้น AFAIK gradle ไม่มีตู้เอทีเอ็มแบบนี้
Sbt และ gradle ทั้งสองใช้ภาษาที่พิมพ์แบบคงที่ .... แต่ sbt มีข้อดีบางประการ: