IntelliJ Idea ile SBT projesi nasıl oluşturulur?


146

Scala / LiftWeb / Sbt geliştirmeye yeni başladım ve IntelliJ Idea'da bir Sbt projesini içe aktarmak istiyorum. Aslında, projemi iki farklı şekilde içe aktarmayı başardım:

1) Maven ile. Bir Maven projesi oluşturdum ve bunun üzerine bir Sbt projesi oluşturdum, ardından bunu IntelliJ'e aktardım. Daha sonra iskele sunucusunu kolayca başlatabilir, durdurabilir ve başka şeyler yapabilirim. Ama istediğim bu değil. Aynı şeyleri Maven'siz yapmak istiyorum. Beni yönlendiren

2) Eclipse ile. Bu yüzden yeni bir Sbt projesi oluşturdum (yazdığım küçük bir komut dosyasıyla, Sbt projesini Web Projesi olacak şekilde yapılandırdım). Daha sonra sbt-eclipsify eklentisini Eclipse için projeyi 'dönüştürmek' için kullandım, daha sonra IntelliJ'e (mevcut kaynak -> tutulma) aktardım. Ancak burada başlayan sorunlar: IntelliJ Sbt eklentisinin çalışmasını sağlayamıyorum.

Biri bana bu konuda yardım edebilir mi?


Hızlı bir cevaba ihtiyaç duyan veya acil bir gereksinim duyan biri için, github'a gidin ve basit bir ölçeklendirme projesi bulun. İndir ve sonra IDE'nize aktarın. Scala projesine erişebilmelisiniz. Mutlu zaman
Bir kullanıcı

Yanıtlar:


170

Bir proje oluşturmanın üç temel yolu vardır - IntelliJ'in modern sürümleri sbt projesini kutudan içe aktarabilir, aksi takdirde IntelliJ projesi oluşturmak için sbt eklentisini kullanabilir veya sbt projesi oluşturmak için IntelliJ Scala eklentisini kullanabilirsiniz. Temel özellikler, her iki çözümü de kullanarak kutudan çıkar, bazı karmaşık yapılarda sorunlar olabilir, bu nedenle, orada çalışıp çalışmadığını görmek için diğer araçları deneyin.

IntelliJ

IntelliJ IDEA bugünlerde çok daha iyi hale geldi. Mevcut sürüm (14.0.2), Scala eklentisi ile sbt projelerini kutudan çıkarır. Sadece eklentiyi kurun ve Scala / sbt projelerini sorunsuz bir şekilde açabilmelisiniz.

Tercihlerdeki Eklentiler altında Scala eklentisi

Eklentiyle, sadece bir sbt projesini işaret edin ve IDEA size bu tür bir projeyi açmanız için bir sihirbaz sunacaktır.

SBT projesini içe aktar

IntelliJ Scala Eklentisi

IntelliJ eklentisi burada http://confluence.jetbrains.com/display/SCA/Scala+Plugin+for+IntelliJ+IDEA bulunabilir veya Ayarlar -> Eklentiler iletişim kutusu kullanılarak doğrudan IDE içinden yüklenebilir. Daha sonra Dosya -> Yeni Proje -> Scala -> SBT tabanlı yapılabilir. IntelliJ, temel build.sbt oluşturacak, gerekli bağımlılıkları indirecek ve projeyi açacaktır.

SBT Eklentisi

Sbt dosyalarına dayalı bir fikir projesi oluşturan Sbt eklentisi burada bulunabilir: https://github.com/mpeltonen/sbt-idea

SBT 12.0+ ve 13.0+

Basitçe eklemek addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.5.2")adresinden Müşteri build.sbt; ek çözücülere gerek yoktur.

Eski versiyonlar:

SBT 0.11+

Oluşturun ve aşağıdaki satırları ekleyin ~/.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-ideaIDEA proje dosyalarını oluşturmak için sbt'de kullanın .

Varsayılan olarak, sbt ve kitaplık bağımlılıklarının sınıflandırıcıları (yani kaynaklar ve javadocs), bulunursa yüklenir ve IDEA proje dosyalarına referanslar eklenir. Bunları indirmek / referans almak istemiyorsanız, command kullanın gen-idea no-classifiers no-sbt-classifiers.


SBT 0.10.1 (eklenti yazara göre, 0.10.0 olmaz çalışır!)

Aşağıdaki satırları oluşturun ve ~ / .sbt / plugins / build.sbt'ye ekleyin:

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

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

gen-ideaIDEA proje dosyalarını oluşturmak için sbt görevini kullanın .

Varsayılan olarak, sbt ve kitaplık bağımlılıklarının sınıflandırıcıları (yani kaynaklar ve javadocs), bulunursa yüklenir ve IDEA proje dosyalarına referanslar eklenir. Bunları indirmek / referans almak istemiyorsanız, command kullanın gen-idea no-classifiers no-sbt-classifiers.


SBT 0.7

Kullanmak için, bunu basitçe sbt kabuğunuzdan çalıştırın, eklentiyi harici bir program olarak kullanacaktır:

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

İstediğiniz gibi proje tanımınıza özellik de ekleyebilirsiniz:

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

4
Ben tamamen bu eklentiye dönüşüyorum. Bunu, proje derlemenizi SBT'ye devretmenize ve IDEA'daki bir araç penceresinden SBT'yi etkileşimli olarak kullanmanıza olanak tanıyan fikir-sbt-eklentisi ile birlikte kullanın. Sbt-idea sürüm 0.2.0-SNAPSHOT, birkaç küçük sorunu düzeltti - bir ana projenin oluşturulması ve manuel IntelliJ yapılandırmasının korunması.
retronym

4
Cevabımı geri çekiyorum. Bu harika bir eklenti ve şimdi her seferinde kullanıyorum.
Synesso

1
SBT 0.10.0 için SBT 0.7.x + stackoverflow.com/questions/4250318/… '
opyate

Bunu sadece project/plubins.sbt addSbtPlugin'e ("com.github.mpeltonen"% "sbt-idea"% "1.1.0") eklemem gerekiyordu
Doug Donohoe


11

Şimdilik bunu elle yapıyorum. Oldukça basit.

  1. SBT ile projeyi oluşturun
  2. Aynı kök yolu ile yeni bir IDEA Projesi oluşturun
  3. Aynı kök yoluna sahip bir modül oluşturun
  4. Src / main / scala'yı modülde src yolu olarak ayarlayın
  5. Src / test / scala'yı modül üzerinde bir test yolu olarak ayarlayın
  6. Scala-library.jar dosyasını kitaplık olarak ekleyin
  7. Bir modül kitaplığı içinde bir jar dizini olarak (varsa) lib ekleyin
  8. Lib_managed / compile (varsa) bir modül kitaplığı içinde bir jar dizini olarak ekleyin
  9. Lib_managed / test (varsa) bir modül kitaplığı içinde bir jar dizini olarak ekleyin

Bu hafızadan. Otomatikleştirilmiş olsaydı daha iyi olurdu, ancak şu an olduğu kadar önemli değil.

Bir uyarı notu: Yukarıdaki yaklaşım new-school sbt ile, yani 0.10 ve daha yeni sürümlerle iyi çalışmaz, çünkü bağımlılıkları varsayılan olarak lib_managed'e kopyalamaz. Ekleyebilirsin

retrieveManaged := true

bağımlılıkları lib_managed içine kopyalaması için build.sbt dosyanıza.


Ancak projenize (iskele) IntelliJ'den mi yoksa bir terminalden mi başlıyorsunuz? IDE'den proje başlatıcısını / derleyicisini ayarlayamıyorum.
ksemeks

Bir şey daha: Yazdığınız her şeyi yaptım, ancak IntelliJ, içe aktarım "import net.liftweb.LiftRules" için "ne sembolü çözülemiyor" diyor
ksemeks

İthalatı aşmayı başardım. / Lib_managed yerine / lib_managed / derlemek zorunda kaldım
ksemeks

6
Cevap geri çekildi! Sbt-idea eklentisini kullanın.
Synesso

7

Tempus fugit ve IntelliJ IDEA bugünlerde çok daha iyi hale geldi. Sonuçta 2015, değil mi?

Bunu söyledikten sonra , IntelliJ IDEA 14.0.2'nin son sürümü , Scala eklentisi ile sbt projelerini kutudan çıkarıyor . Sadece eklentiyi kurun ve Scala / sbt projelerini çok fazla sorun yaşamadan açabilmelisiniz.

Tercihlerdeki Eklentiler altında Scala eklentisi

Eklentinin 1.2.67.6.EAP olan Erken Erişim sürümünü yazım tarihi itibariyle kullanıyorum.

Eklentiyle bir sbt projesini işaret edin ve IDEA size bu tür bir projeyi açmanız için bir sihirbaz sunacak.

SBT projesini içe aktar

Sbt 0.12.4'te sbt-idea hakkında

Sbt için 0.12.4 sistem genelinde eklenti yapılandırma dosyası - ~/.sbt/plugins/build.sbtveya PROJECT_DIR/project/plugins.sbt- aşağıdaki satırları olmalıdır:

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

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

sbt gen-ideaIDEA proje dosyalarını oluşturmak için çalıştırın .

Daha güncel bilgiler için sbt-idea eklenti web sitesini okuyun . Ayrıca blog girişimi sbt tabanlı projeyi IntelliJ IDEA 13'e aktarmak (sbt-idea, Scala 2.11 ve sbt 0.12 ile) yararlı bulabilirsiniz.


Yeni proje oluştururken. Sbt gen-idea'dan sonra proje boş. Yapı yok, src değil, test klasörü. Ve bu topal ..
ses

Projeyi nasıl yarattınız? Dizin yapısı ve içindeki dosyalar nedir?
Jacek Laskowski

Sadece boş. Onu "main / scala / src" yi elle sandıklamak zorunda kaldım. Ama bununla yaşayabilirim.
ses

Bir sbt projesini önyüklemek için github.com/n8han/giter8'i kullanmak isteyebilirsiniz . sbt boş ana proje olarak dizin ve sahip olabilir ana / scala / src edilir değil gerekli - sadece onları almaya sbt ana dizininde görünen Scala dosyaları yerleştirin.
Jacek Laskowski

5

Sbt 0.7 için

Bkz bu sayfadaki Cevap başka .

Sbt 0.10 için

İsmail'in fikrini klonlayın ve inşa edin:

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

Zaten yoksa, bir sbt eklenti kitaplık dizini oluşturun

mkdir -p  ~/.sbt/plugins/lib

Birinci adımdaki kavanozu buraya kopyalayın

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

Sbt'yi yeniden başlatın veya yeniden yükleyin, ardından çalıştırabilirsiniz gen-idea(veya gen-idea with-classifiersintelliJ'de kaynaklar ve javadoc da istiyorsanız)

Kaynak: Müdahalecilerin mesaj grubu hakkındaki önerisi .

IntelliJ IDEA 13.x'in kendisinde

Bugünlerde IDEA'da SBT tabanlı bir proje açabilirsiniz. Gerekli proje ve modülleri oluşturacak ve derleme komut dosyalarında her değişiklik yaptığınızda bağımlılıklarınızı güncel tutacaktır.


2

Tüm bu acıları yaşadım. Kabul edilebilir bir ortam oluşturmak için günler harcıyorum ve ENSIME, SBT ve JRebel'in bir süre benim geliştirme ortamım olacağı sonucuna vardım. Evet, Emacs'e geri dönüyor, ancak ENSIME onu yeniden düzenleme, hata ayıklama desteği, gezinme vb. İle biraz veya bir fikre dönüştürüyor. Eclipse (Java) kadar iyi bir yerde değil, ancak ölçek eklentileri daha iyi çalışmadıkça elimizde en iyisi.

Scala geliştirme ortamları sönene kadar (Eclipse veya IntelliJ) zahmet etmeyeceğim. Onlar sadece çok arabalılar.

Asansör sitesindeki tartışmaya bakın.

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

Bu iş parçacığı içinde, IntelliJ için bir NASIL belgesine bir bağlantı var, ancak işe yarasa da, onu biraz daha az kullanışlı kılan birçok konu var.

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


Ben zaten okudum. Bu makale, çalışmayı başardığım maven kullanıyor. Şimdi de aynısını yapmaya çalışıyorum, sadece sbt, withot maven ile.
ksemeks

IntelliJ'in kullanması için projeyi ayarlayabilirim, ancak sbt derleyicisini / başlatıcısını çalıştıramıyorum.
ksemeks

ENSIME söz konusu olduğunda: Çalışmaya başlamak kolay mı? Bir kez denedim ama emacs ile hiç çalışmadım, bu yüzden benim için biraz zordu. emacs ile çalışmak bir öncül mü?
ksemeks

Aşağıdaki bağlantı sizi bir SBT kurulumuna götürecektir. Bu benim için işe yaradı, ancak yine SBT ve IntelliJ ile entegre olmayan bir şekilde çalışmak gerçekten SBT ile ENSIME'nin çok daha doğal olduğu iki ayrı araç kullanmaya benziyor. heikoseeberger.blogspot.com/2010/08/…
andyczerwonka

2

Cevaplar 2014 için eskidir. IntelliJ 13.x'te , Scala eklentisi sürüm 0.41.2'dir (SBT dahildir).

Benim SBT sürüm 0.13.5 olduğunu (terminali: sbt sbtVersion)

Projenin kök klasörüne gidin ve terminale girin

sbt idea

İki yeni gizli klasör göreceksiniz .idea ve .idea_modules .

Ardından IntelliJ'de Dosya> Aç> projeyi seçin. Projeyi sorunsuz bir şekilde açmalıdır.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.