วิธีสร้างโครงการ SBT ด้วย IntelliJ Idea


146

ฉันเพิ่งเริ่มต้นด้วยการพัฒนา Scala / LiftWeb / Sbt และฉันต้องการนำเข้าโครงการ Sbt ใน IntelliJ Idea ที่จริงฉันจัดการเพื่อนำเข้าโครงการของฉันในสองวิธีที่แตกต่างกัน:

1) กับ Maven ฉันสร้างโครงการ Maven และยิ่งไปกว่านั้นฉันสร้างโครงการ Sbt ซึ่งฉันนำเข้าจาก IntelliJ ฉันสามารถเริ่มต้นได้อย่างง่ายดายหยุดเซิร์ฟเวอร์ท่าเทียบเรือและทำสิ่งอื่น ๆ แต่นั่นไม่ใช่สิ่งที่ฉันต้องการ ฉันต้องการทำสิ่งเดียวกันเพียงปราศจาก Maven นั่นทำให้ฉันไป

2) ด้วย Eclipse ดังนั้นฉันจึงสร้างโครงการ Sbt ใหม่ (ด้วยสคริปต์ที่ฉันเขียนเล็กน้อยกำหนดค่าโครงการ Sbt ให้เป็น WebProject) ฉันใช้ปลั๊กอิน sbt-eclipsify เพื่อ 'แปลง' โครงการสำหรับ Eclipse ซึ่งฉันก็นำเข้าใน IntelliJ (ซอร์สที่มีอยู่ -> eclipse) แต่ปัญหาเริ่มต้นที่นี่: ฉันไม่สามารถทำให้ปลั๊กอิน IntelliJ Sbt ทำงานได้

มีใครช่วยฉันได้บ้าง


สำหรับคนที่ต้องการคำตอบอย่างรวดเร็วหรือหากต้องการด่วนให้ไปที่ GitHub และหาโครงการสกาล่าง่าย ๆ ดาวน์โหลดแล้วนำเข้าใน IDE ของคุณ คุณควรจะสามารถเข้าถึงโครงการสกาล่า Happy time
ผู้ใช้

คำตอบ:


170

มีวิธีการพื้นฐานสามวิธีในการสร้างโครงการ - IntelliJ รุ่นทันสมัยสามารถนำเข้า sbt project ได้นอกกรอบไม่เช่นนั้นคุณสามารถใช้ sbt plugin เพื่อสร้างโครงการ IntelliJ หรือใช้ปลั๊กอิน IntelliJ Scala เพื่อสร้างโครงการ sbt คุณสมบัติพื้นฐานทำงานนอกกรอบโดยใช้ทั้งสองวิธีการสร้างที่ซับซ้อนบางอย่างอาจมีปัญหาดังนั้นลองใช้เครื่องมืออื่น ๆ เพื่อดูว่าใช้งานได้หรือไม่

IntelliJ

IntelliJ IDEA ได้กลายเป็นสิ่งที่ดีขึ้นมากในวันนี้ รุ่นปัจจุบัน (14.0.2) รองรับโครงการ sbt นอกกรอบด้วยปลั๊กอินสกาล่า เพียงติดตั้งปลั๊กอินและคุณควรจะสามารถเปิดโครงการ Scala / sbt ได้โดยไม่มีปัญหาใด ๆ

ปลั๊กอิน Scala ภายใต้ปลั๊กอินในการตั้งค่า

ด้วยปลั๊กอินเพียงชี้ไปที่โครงการ sbt และ IDEA จะเสนอตัวช่วยสร้างให้คุณเปิดโครงการประเภทนั้น

นำเข้าโครงการ sbt

ปลั๊กอิน IntelliJ Scala

ปลั๊กอิน IntelliJ สามารถพบได้ที่นี่ http://confluence.jetbrains.com/display/SCA/Scala+Plugin+for+IntelliJ+IDEAหรือสามารถติดตั้ง directoly จากภายใน IDE โดยใช้การตั้งค่า -> กล่องโต้ตอบปลั๊กอิน หลังจากนั้นหนึ่งสามารถทำไฟล์ -> โครงการใหม่ -> Scala -> ตาม SBT IntelliJ จะสร้าง build.sbt พื้นฐานดาวน์โหลดการอ้างอิงที่จำเป็นและโครงการเปิด

ปลั๊กอิน SBT

ปลั๊กอิน Sbt ที่สร้างโครงการความคิดขึ้นอยู่กับไฟล์ sbt สามารถดูได้ที่นี่: https://github.com/mpeltonen/sbt-idea

SBT 12.0+ และ 13.0+

เพียงเพิ่มaddSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.5.2")ของคุณbuild.sbt; ไม่จำเป็นต้องใช้ตัวแก้ไขเพิ่มเติม

รุ่นเก่ากว่า:

SBT 0.11+

สร้างและเพิ่มบรรทัดต่อไปนี้ไปที่~/.sbt/plugins/build.sbtORPROJECT_DIR/project/plugins.sbt

resolvers += "sbt-idea-repo" at "http://mpeltonen.github.com/maven/"

addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.6.0")

ใช้gen-ideaใน sbt เพื่อสร้างไฟล์โปรเจ็กต์ IDEA

โดยค่าเริ่มต้นตัวแยกประเภท (เช่นแหล่งที่มาและ javadocs) ของ sbt และการขึ้นต่อกันของไลบรารีจะถูกโหลดหากพบและเพิ่มการอ้างอิงไปยังไฟล์โครงการ IDEA หากคุณไม่ต้องการดาวน์โหลด / gen-idea no-classifiers no-sbt-classifiersอ้างอิงพวกเขาใช้คำสั่ง


SBT 0.10.1 (อ้างอิงจากผู้เขียนปลั๊กอิน, 0.10.0 จะไม่ทำงาน!)

สร้างและเพิ่มบรรทัดต่อไปนี้ใน ~ / .sbt / plugins / build.sbt:

resolvers += "sbt-idea-repo" at "http://mpeltonen.github.com/maven/"

libraryDependencies += "com.github.mpeltonen" %% "sbt-idea" % "0.10.0"

ใช้gen-ideaงาน sbt เพื่อสร้างไฟล์โปรเจ็กต์ IDEA

โดยค่าเริ่มต้นตัวแยกประเภท (เช่นแหล่งที่มาและ javadocs) ของ sbt และการขึ้นต่อกันของไลบรารีจะถูกโหลดหากพบและเพิ่มการอ้างอิงไปยังไฟล์โครงการ IDEA หากคุณไม่ต้องการดาวน์โหลด / gen-idea no-classifiers no-sbt-classifiersอ้างอิงพวกเขาใช้คำสั่ง


SBT 0.7

หากต้องการใช้งานให้เรียกใช้จากเชลล์ sbt ของคุณโดยจะใช้ปลั๊กอินเป็นโปรแกรมภายนอก:

 > *sbtIdeaRepo at http://mpeltonen.github.com/maven/
 > *idea is com.github.mpeltonen sbt-idea-processor 0.4.0
 ...
 > update
 ...
 > idea
 ...

นอกจากนี้คุณยังสามารถเพิ่มคุณลักษณะในคำนิยามโครงการของคุณตามที่คุณต้องการ:

import sbt._
class MyProject(info: ProjectInfo) extends ParentProject(info) with IdeaProject {
  lazy val mySubProject = project("my-subproject", "my-subproject", new DefaultProject(_) with IdeaProject)
   // ...
}

4
ฉันแปลงเป็นปลั๊กอินนี้ทั้งหมด ใช้ร่วมกับ idea-sbt-plugin ซึ่งช่วยให้คุณมอบหมายโครงการของคุณให้กับ SBT และใช้ SBT แบบโต้ตอบได้จากหน้าต่างเครื่องมือใน IDEA เวอร์ชัน 0.2.0-SNAPSHOT ของ sbt-idea แก้ไขปัญหาเล็กน้อยบางประการ - การสร้างโปรเจ็กต์หลักและการเก็บรักษาคอนฟิกูเรชัน IntelliJ แบบแมนนวล
retronym

ขอบคุณสำหรับปลั๊กอินนี้ มันเป็น helfpul จริงๆ!
ksemeks

4
ฉันตอบคำตอบของฉันแล้ว นี่เป็นปลั๊กอินที่ยอดเยี่ยมและตอนนี้ฉันใช้ทุกครั้ง
Synesso

1
ฉันเพิ่มคำตอบสำหรับ SBT 0.10.0 ซึ่งแตกต่างอย่างสิ้นเชิงกับ SBT 0.7.x + stackoverflow.com/questions/4250318/…
opyate

ขอบคุณ opyate ฉันได้อัปเดตโพสต์ตามความคิดเห็นของคุณแล้ว
Steve Gury

11

ตอนนี้ฉันทำด้วยมือ มันค่อนข้างง่าย

  1. สร้างโครงการด้วย SBT
  2. สร้างโครงการ IDEA ใหม่ด้วยรูทพา ธ เดียวกัน
  3. สร้างโมดูลที่มีรูทพา ธ เดียวกัน
  4. ตั้งค่า src / main / scala เป็นพา ธ src บนโมดูล
  5. ตั้งค่า src / test / scala เป็นเส้นทางทดสอบบนโมดูล
  6. เพิ่ม scala-library.jar เป็นไลบรารี
  7. เพิ่ม lib (หากมีอยู่) เป็นไดเร็กทอรี jar ภายในไลบรารีโมดูล
  8. เพิ่ม lib_managed / compile (ถ้ามี) เป็นไดเร็กทอรี jar ภายในไลบรารีโมดูล
  9. เพิ่ม lib_managed / test (ถ้ามี) เป็นไดเร็กทอรี jar ภายในไลบรารีโมดูล

นั่นคือจากหน่วยความจำ มันจะดีกว่าถ้ามันเป็นแบบอัตโนมัติ แต่มันก็ไม่ใช่เรื่องใหญ่เหมือนตอนนี้

ข้อควรระวังหนึ่งข้อควรระวัง: วิธีการข้างต้นใช้งานไม่ได้กับ sbt โรงเรียนใหม่เช่นรุ่น 0.10 และใหม่กว่าเพราะไม่ได้คัดลอกการอ้างอิงไปสู่ ​​lib_managed โดยค่าเริ่มต้น คุณสามารถเพิ่ม

retrieveManaged := true

เพื่อ build.sbt ของคุณเพื่อคัดลอกการอ้างอิงลงใน lib_managed


แต่คุณจะเริ่มโครงการ (ท่าเทียบเรือ) จาก IntelliJ หรือจากเทอร์มินัลได้หรือไม่? ฉันไม่สามารถตั้งค่าตัวเรียกใช้งาน / คอมไพเลอร์โครงการจาก IDE
ksemeks

อีกอย่างหนึ่ง: ฉันทำทุกสิ่งที่คุณเขียน แต่ IntelliJ กำลังพูดว่า "ไม่สามารถแก้ปัญหาสัญลักษณ์" สำหรับการนำเข้า "import net.liftweb.LiftRules"
ksemeks

ฉันจัดการเพื่อให้ได้รอบการนำเข้า ฉันต้องนำเข้า / lib_managed / คอมไพล์แทน / lib_managed
ksemeks

6
ถอนคำตอบแล้ว! ใช้ปลั๊กอิน sbt-idea
Synesso

7

บันทึกเวลาและ IntelliJ IDEA ได้กลายเป็นดีขึ้นมากในวันนี้ มันคือปี 2015 ใช่ไหม?

ต้องบอกว่าเป็นรุ่นล่าสุดของ IntelliJ IDEA 14.0.2สนับสนุน SBT โครงการออกจากกล่องที่มีปลั๊กอินสกาล่า เพียงติดตั้งปลั๊กอินและคุณควรจะสามารถเปิดโครงการ Scala / sbt ได้โดยไม่มีปัญหามาก

ปลั๊กอิน Scala ภายใต้ปลั๊กอินในการตั้งค่า

ฉันใช้เวอร์ชัน Early Access ของปลั๊กอินซึ่งเป็น 1.2.67.6.EAP ณ เวลาที่เขียน

ด้วยปลั๊กอินเพียงชี้ไปที่โครงการ sbt และ IDEA จะเสนอตัวช่วยสร้างให้คุณเปิดโครงการประเภทนั้น

นำเข้าโครงการ sbt

เกี่ยวกับ sbt-idea ใน sbt 0.12.4

สำหรับ sbt 0.12.4ไฟล์คอนฟิกูเรชันปลั๊กอินสำหรับระบบ - ~/.sbt/plugins/build.sbtหรือPROJECT_DIR/project/plugins.sbt- ควรมีบรรทัดต่อไปนี้:

resolvers += "Sonatype snapshots" at "http://oss.sonatype.org/content/repositories/snapshots/"

addSbtPlugin(dependency="com.github.mpeltonen" % "sbt-idea" % "1.5.0-SNAPSHOT")

วิ่ง sbt gen-ideaเพื่อสร้างไฟล์โครงการ IDEA

อ่านเว็บไซต์ปลั๊กอิน sbt-ideaสำหรับข้อมูลล่าสุด คุณอาจพบว่ารายการบล็อกของฉันการนำเข้าโครงการที่ใช้ SBT ไปยัง IntelliJ IDEA 13 (ด้วย sbt-idea, Scala 2.11 และ sbt 0.12)มีประโยชน์


เมื่อสร้างโครงการใหม่ หลังจาก sbt gen-idea โครงการว่างเปล่า ไม่มีโครงสร้างไม่ใช่ src โฟลเดอร์ทดสอบ และมันก็เป็นง่อย ..
ses

คุณสร้างโครงการอย่างไร โครงสร้างไดเรกทอรีและไฟล์ภายในคืออะไร?
Jacek Laskowski

มันว่างเปล่า ฉันต้องลัง "main / scala / src" ด้วยมือ แต่ฉันสามารถอยู่กับสิ่งนั้นได้
ses

คุณอาจต้องการใช้github.com/n8han/giter8เป็นวิธีการเริ่มต้นโครงการ sbt sbt สามารถมีไดเรกทอรีว่างเปล่าเป็นโครงการหลักและไม่จำเป็นต้องใช้หลัก / scala / src เพียงวางไฟล์ Scala ของคุณในไดเรกทอรีหลักเพื่อให้ sbt เลือกมัน
Jacek Laskowski

5

สำหรับ sbt 0.7

ดูคำตอบที่อื่นในหน้านี้

สำหรับ sbt 0.10

โคลนและสร้างไอเดีย SBT ของ Ismael:

git clone https://github.com/ijuma/sbt-idea.git
cd sbt-idea
git checkout sbt-0.10
./sbt package

สร้างไดเรกทอรี lib sbt plugin หากคุณยังไม่มี

mkdir -p  ~/.sbt/plugins/lib

คัดลอก jar ที่สร้างในขั้นตอนที่หนึ่งลงที่นี่

cp sbt-idea/target/scala-2.8.1.final/*.jar ~/.sbt/plugins/lib

รีสตาร์ทหรือโหลด sbt จากนั้นคุณสามารถเรียกใช้gen-idea(หรือgen-idea with-classifiersถ้าคุณต้องการแหล่งข้อมูลและ javadoc ใน intelliJ ด้วย)

: แหล่งที่มาของข้อเสนอแนะ Tackers' กลุ่มข้อความ

ใน IntelliJ IDEA 13.x นั้นเอง

คุณสามารถเปิดโครงการที่ใช้ SBT ใน IDEA ทุกวันนี้ มันจะสร้างโครงการและโมดูลที่จำเป็นและทำให้การอ้างอิงของคุณเป็นปัจจุบันเมื่อใดก็ตามที่คุณทำการเปลี่ยนแปลงสคริปต์การสร้าง


2

ฉันเพิ่งผ่านความเจ็บปวดทั้งหมดนี้ ฉันใช้เวลาหลายวันในการพยายามทำให้สภาพแวดล้อมเป็นที่ยอมรับและได้ข้อสรุปว่า ENSIME, SBT และ JRebel กำลังจะเป็นสภาพแวดล้อมการพัฒนาของฉันในบางครั้ง ใช่มันกำลังจะกลับไปที่ Emacs แต่ ENSIME จะเปลี่ยนเป็นความคิดเล็กน้อยด้วยการปรับโครงสร้างการสนับสนุนการดีบักการนำทางและอื่น ๆ มันไม่ได้อยู่ใกล้ดีเท่ากับ Eclipse (Java) แต่ถ้าปลั๊กอินสกาล่าทำงานได้ดีกว่า ดีที่สุดที่เรามี

จนกว่าสภาพแวดล้อมการพัฒนาของสกาล่าจะขึ้นอยู่กับกลิ่น (Eclipse หรือ IntelliJ) ฉันจะไม่รำคาญ พวกมันเป็นรถบักกี้เกินไป

ดูการอภิปรายในเว็บไซต์ยก

http://groups.google.com/group/liftweb/browse_thread/thread/6e38ae7396575052#

ภายในเธรดนั้นมีลิงก์ไปยัง HOWTO สำหรับ IntelliJ แต่มันก็ใช้ได้ดีมีหลายประเด็นที่ทำให้มีประโยชน์น้อยลงเล็กน้อย

http://blog.morroni.com/2010/07/14/setup-intellij-9-for-lift-framework-development/comment-page-1/


ฉันอ่านแล้ว บทความนี้ใช้ maven ซึ่งฉันจัดการเพื่อให้ทำงานได้ ฉันพยายามที่จะทำเช่นเดียวกันตอนนี้เพียงกับ sbt, maven ไม่ได้
ksemeks

ฉันสามารถตั้งค่าโครงการสำหรับ IntelliJ เพื่อใช้งานได้ แต่ไม่สามารถทำงานกับ sbt compiler / launcher ได้
ksemeks

เท่าที่ ENSIME เกี่ยวข้อง: ง่ายต่อการทำงานหรือไม่ ฉันลองครั้งเดียว แต่ฉันไม่เคยทำงานกับ emacs ดังนั้นมันจึงยากสำหรับฉัน การทำงานกับ emacs เป็นหลักฐานหรือไม่
ksemeks

ลิงค์ต่อไปนี้จะนำคุณไปสู่การตั้งค่า SBT สิ่งนี้ได้ผลสำหรับฉัน แต่การทำงานกับ SBT และ IntelliJ อีกครั้งในแบบที่ไม่ได้บูรณาการนั้นเหมือนกับการใช้เครื่องมือแยกสองตัวซึ่ง ENSIME กับ SBT นั้นเป็นธรรมชาติมากขึ้น heikoseeberger.blogspot.com/2010/08/…
andyczerwonka

2

คำตอบนั้นเก่าสำหรับปี 2014 ในIntelliJ 13.xปลั๊กอิน Scala คือ ver 0.41.2 (รวมอยู่ใน SBT)

ฉันรุ่น SBT เป็น 0.13.5 (ขั้ว: sbt sbtVersion)

ไปที่โฟลเดอร์รูทของโครงการและเข้าไปในเทอร์มินัล

sbt idea

คุณจะเห็นโฟลเดอร์ที่ซ่อนใหม่สองไฟล์. aaa และ. aa_modules

จากนั้นใน IntelliJ, ไฟล์> เปิด> เลือกโครงการ ควรเปิดโครงการโดยไม่มีปัญหาใด ๆ


0

ก่อนที่คุณจะเริ่มสร้างโครงการ SBT ของคุณตรวจสอบให้แน่ใจว่ามีการดาวน์โหลดและเปิดใช้งานปลั๊กอิน Scala ใน IntelliJ IDEA

ลิงค์ด้านล่างอธิบายทุกสิ่งที่คุณจำเป็นต้องรู้

https://www.jetbrains.com/help/idea/2016.1/getting-started-with-sbt.html

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