Bagaimana cara membuat proyek SBT dengan Ide IntelliJ?

146

Saya baru saja mulai dengan pengembangan Scala / LiftWeb / Sbt, dan saya ingin mengimpor proyek Sbt di IntelliJ Idea. Sebenarnya, saya berhasil mengimpor proyek saya dengan dua cara berbeda:

1) dengan Maven. Saya membuat proyek Maven, dan yang paling penting, saya membuat proyek Sbt, yang kemudian saya impor di IntelliJ. Saya kemudian dapat dengan mudah memulai, menghentikan server dermaga, dan melakukan hal-hal lain. Tapi bukan itu yang saya inginkan. Saya ingin melakukan hal yang sama, hanya bebas Maven. Itu menuntun saya ke

2) dengan Eclipse. Jadi, saya membuat proyek Sbt baru (dengan skrip kecil yang saya tulis, mengonfigurasi proyek Sbt menjadi Proyek Web). Saya kemudian menggunakan plugin sbt-eclipsify untuk 'mengubah' proyek untuk Eclipse, yang kemudian saya impor di IntelliJ (sumber yang ada -> gerhana). Tapi masalahnya dimulai di sini: Saya tidak bisa mengaktifkan plugin IntelliJ Sbt.

Adakah yang bisa membantu saya dengan ini?

ksemeks
sumber
Untuk seseorang yang membutuhkan jawaban cepat atau jika persyaratannya mendesak, buka saja github dan temukan proyek scala sederhana. Unduh lalu impor di IDE Anda. Anda harus dapat mengakses proyek scala. Happy time
Seorang pengguna

Jawaban:

170

Ada tiga cara dasar cara membuat proyek - IntelliJ versi modern dapat mengimpor proyek sbt, jika tidak Anda bisa menggunakan plugin sbt untuk menghasilkan proyek IntelliJ, atau menggunakan plugin IntelliJ Scala untuk membuat proyek sbt. Fitur dasar bekerja di luar kotak menggunakan kedua solusi, beberapa build kompleks dapat mengalami masalah, jadi coba alat lain untuk melihat apakah itu berfungsi di sana.

IntelliJ

IntelliJ IDEA menjadi jauh lebih baik hari ini. Versi saat ini (14.0.2) mendukung proyek sbt di luar kotak dengan plugin Scala. Cukup instal plugin dan Anda harus dapat membuka proyek Scala / sbt tanpa masalah.

Scala plugin di bawah Plugins in Preferences

Dengan plugin, tunjuk saja pada proyek sbt dan IDEA akan menawarkan kepada Anda panduan untuk membuka proyek semacam itu.

Impor proyek sbt

Plugin IntelliJ Scala

Plugin IntelliJ dapat ditemukan di sini http://confluence.jetbrains.com/display/SCA/Scala+Plugin+for+IntelliJ+IDEA atau dapat diinstal secara langsung dari dalam IDE menggunakan Pengaturan -> dialog Plugins. Setelah itu kita bisa melakukan File -> New Project -> Scala -> berbasis SBT. IntelliJ akan menghasilkan build.sbt dasar, unduh dependensi yang diperlukan, dan buka proyek.

Plugin SBT

Plugin Sbt yang menghasilkan proyek ide berdasarkan file sbt dapat ditemukan di sini: https://github.com/mpeltonen/sbt-idea

SBT 12.0+ & 13.0+

Cukup tambahkan addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.5.2")ke Anda build.sbt; tidak ada resolusi tambahan yang diperlukan.

Versi Lama:

SBT 0,11+

Buat dan tambahkan baris berikut ke ~/.sbt/plugins/build.sbtATAUPROJECT_DIR/project/plugins.sbt

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

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

Gunakan gen-ideadi sbt untuk membuat file proyek IDEA.

Secara default, pengklasifikasi (sumber dan javadocs) dari sbt dan dependensi perpustakaan dimuat jika ditemukan dan referensi ditambahkan ke file proyek IDEA. Jika Anda tidak ingin mengunduh / mereferensikannya, gunakan perintah gen-idea no-classifiers no-sbt-classifiers.


SBT 0.10.1 (menurut pembuat plugin, 0.10.0 tidak akan berfungsi!)

Buat dan tambahkan baris berikut ke ~ / .sbt / plugins / build.sbt:

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

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

Gunakan gen-ideatugas sbt untuk membuat file proyek IDEA.

Secara default, pengklasifikasi (sumber dan javadocs) dari sbt dan dependensi perpustakaan dimuat jika ditemukan dan referensi ditambahkan ke file proyek IDEA. Jika Anda tidak ingin mengunduh / mereferensikannya, gunakan perintah gen-idea no-classifiers no-sbt-classifiers.


SBT 0.7

Untuk menggunakannya, cukup jalankan ini dari shell sbt Anda, itu akan menggunakan plugin sebagai program eksternal:

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

Anda juga dapat menambahkan sifat dalam definisi proyek Anda, seperti yang Anda inginkan:

import sbt._
class MyProject(info: ProjectInfo) extends ParentProject(info) with IdeaProject {
  lazy val mySubProject = project("my-subproject", "my-subproject", new DefaultProject(_) with IdeaProject)
   // ...
}
Steve Gury
sumber
4
Saya seorang mualaf total untuk plugin ini. Gunakan dalam kombinasi dengan ide-sbt-plugin, yang memungkinkan Anda mendelegasikan build proyek Anda ke SBT, dan menggunakan SBT secara interaktif dari jendela alat di IDEA. Versi 0.2.0-SNAPSHOT dari sbt-idea memperbaiki sedikit gangguan - pembuatan proyek induk, dan pelestarian konfigurasi IntelliJ manual.
retronym
Terima kasih atas plugin ini. Ini benar-benar helfpul!
ksemeks
4
Saya menarik kembali jawaban saya. Ini adalah plugin yang bagus dan saya sekarang menggunakannya setiap saat.
Synesso
1
Saya menambahkan jawaban untuk SBT 0.10.0, yang sama sekali berbeda dengan SBT 0.7.x + stackoverflow.com/questions/4250318/…
opyate
Terima kasih opyate, saya telah memperbarui posting saya sesuai dengan komentar Anda
Steve Gury
11

Untuk saat ini saya melakukan ini dengan tangan. Cukup sederhana.

  1. Buat proyek dengan SBT
  2. Buat Proyek IDEA baru dengan jalur root yang sama
  3. Buat modul dengan jalur root yang sama
  4. Atur src / main / scala sebagai jalur src pada modul
  5. Atur src / test / scala sebagai jalur uji pada modul
  6. Tambahkan scala-library.jar sebagai perpustakaan
  7. Tambahkan lib (jika ada) sebagai direktori jar dalam perpustakaan modul
  8. Tambahkan lib_managed / compile (jika ada) sebagai direktori jar dalam perpustakaan modul
  9. Tambahkan lib_managed / test (jika ada) sebagai direktori jar dalam perpustakaan modul

Itu dari ingatan. Akan lebih baik jika itu otomatis, tetapi itu bukan masalah besar seperti sekarang.

Satu catatan kehati-hatian: Pendekatan di atas tidak bekerja dengan baik dengan sbt sekolah-baru, yaitu versi 0.10 dan yang lebih baru, karena tidak menyalin dependensi ke lib_managed secara default. Anda dapat menambahkan

retrieveManaged := true

ke build.sbt Anda untuk membuatnya menyalin dependensi ke lib_managed.

Synesso
sumber
Tapi, apakah Anda memulai proyek Anda (dermaga) dari IntelliJ atau dari terminal? Saya tidak dapat mengatur peluncur / kompiler proyek dari IDE.
ksemeks
Satu hal lagi: Saya melakukan semua yang Anda tulis, tetapi IntelliJ mengatakan "Tidak dapat menyelesaikan simbol ne" untuk impor "import net.liftweb.LiftRules"
ksemeks
Saya berhasil menyelesaikan impor. Saya harus mengimpor / lib_managed / compile alih-alih / lib_managed
ksemeks
6
Jawaban ditarik kembali! Gunakan plugin sbt-idea.
Synesso
7

Tempus fugit dan IntelliJ IDEA menjadi jauh lebih baik hari ini. Bagaimanapun juga, ini tahun 2015, bukan?

Karena itu, versi terbaru dari IntelliJ IDEA 14.0.2 mendukung proyek sbt di luar kotak dengan plugin Scala . Cukup instal plugin dan Anda harus dapat membuka proyek Scala / sbt tanpa banyak masalah.

Scala plugin di bawah Plugins in Preferences

Saya menggunakan versi Early Access dari plugin yang 1.2.67.6.EAP pada saat penulisan.

Dengan plugin arahkan saja ke proyek sbt dan IDEA akan menawarkan kepada Anda panduan untuk membuka proyek semacam itu.

Impor proyek sbt

Tentang sbt-idea dalam sbt 0.12.4

Untuk sbt 0.12.4 file konfigurasi plugin di seluruh sistem - ~/.sbt/plugins/build.sbtatau PROJECT_DIR/project/plugins.sbt- harus memiliki baris berikut:

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

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

Jalankan sbt gen-ideauntuk menghasilkan file proyek IDEA.

Baca situs web plugin sbt-idea untuk informasi lebih lanjut. Anda juga dapat menemukan entri blog saya Mengimpor proyek berbasis sbt ke IntelliJ IDEA 13 (dengan sbt-idea, Scala 2.11 dan sbt 0.12) berguna.

Jacek Laskowski
sumber
Saat membuat proyek baru. Setelah sbt gen-ide proyek itu kosong. Tidak ada struktur, bukan src, folder tes. Dan itu lumpuh ..
ses
Bagaimana Anda membuat proyek? Apa struktur direktori dan file di dalamnya?
Jacek Laskowski
Itu hanya kosong. Saya harus mengolahnya "main / scala / src" dengan tangan. Tapi saya bisa hidup dengan itu.
ses
Anda mungkin ingin menggunakan github.com/n8han/giter8 sebagai cara bootstrap proyek sbt. sbt dapat memiliki direktori kosong sebagai proyek utama dan main / scala / src tidak diperlukan - cukup tempatkan file Scala Anda di direktori utama agar sbt dapat mengambilnya.
Jacek Laskowski
5

Untuk sbt 0.7

Lihat jawabannya di tempat lain di halaman ini .

Untuk sbt 0,10

Klon dan bangun ide-sbt Ismael:

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

Buat direktori lib plugin sbt jika Anda belum memilikinya

mkdir -p  ~/.sbt/plugins/lib

Salin toples yang dibuat pada langkah pertama ke sini

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

Mulai ulang atau muat ulang sbt, lalu Anda dapat menjalankan gen-idea(atau gen-idea with-classifiersjika Anda menginginkan sumber dan javadoc di intelliJ juga)

Sumber: Saran Tackers tentang grup pesan .

Dalam IntelliJ IDEA 13.x itu sendiri

Anda dapat membuka proyek berbasis SBT di IDEA saat ini. Ini akan membuat proyek dan modul yang diperlukan, dan menjaga agar dependensi Anda tetap terbaru setiap kali Anda membuat perubahan pada skrip build.

opyate
sumber
2

Saya baru saja melewati semua rasa sakit ini. Saya menghabiskan waktu berhari-hari untuk meningkatkan lingkungan yang dapat diterima dan sampai pada kesimpulan bahwa ENSIME, SBT, dan JRebel akan menjadi lingkungan pengembangan saya selama beberapa waktu. Ya, itu akan kembali ke Emacs, tetapi ENSIME mengubahnya menjadi sedikit atau gagasan dengan refactoring, dukungan debugging, navigasi, dll. Ini tidak jauh dari Eclipse (Java), tetapi kecuali jika scala plugins bekerja lebih baik itu adalah terbaik yang kita miliki.

Sampai lingkungan pengembangan Scala bangun untuk menghabisi (Eclipse atau IntelliJ) saya tidak akan repot. Mereka terlalu buggy.

Lihat diskusi di situs lift.

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

Di dalam utas itu, ada tautan ke HOWTO untuk IntelliJ, tetapi meskipun agak berfungsi, ada banyak masalah yang membuatnya sedikit kurang bermanfaat.

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

andyczerwonka
sumber
Saya sudah membacanya. Artikel ini menggunakan pakar, yang saya berhasil bekerja. Saya mencoba melakukan hal yang sama sekarang, hanya dengan sbt, tanpa pakar.
ksemeks
Saya dapat mengatur proyek untuk IntelliJ untuk menggunakannya, tetapi tidak bisa bekerja dengan kompiler / peluncur sbt.
ksemeks
Sejauh menyangkut ENSIME: apakah mudah untuk bekerja? Saya pernah mencoba, tetapi saya tidak pernah bekerja dengan emacs, jadi itu agak sulit bagi saya. apakah bekerja dengan emacs premis?
ksemeks
Tautan berikut akan membawa Anda melalui pengaturan SBT. Ini bekerja untuk saya, tetapi sekali lagi bekerja dengan SBT dan IntelliJ dengan cara yang tidak terintegrasi benar-benar seperti menggunakan dua alat terpisah, yang ENSIME dengan SBT jauh lebih alami. heikoseeberger.blogspot.com/2010/08/...
andyczerwonka
2

Jawabannya sudah tua untuk 2014. Di IntelliJ 13.x , plugin Scala adalah ver 0.41.2 (SBT disertakan).

Saya versi SBT adalah 0.13.5 (terminal: sbt sbtVersion)

Buka folder root proyek dan masukkan di terminal

sbt idea

Anda akan melihat dua folder tersembunyi .idea dan .idea_modules .

Kemudian di IntelliJ, File> Open> pilih proyek. Itu harus membuka proyek tanpa masalah.

Raymond Chenon
sumber