Jak stworzyć projekt SBT z IntelliJ Idea?

146

Właśnie zacząłem rozwijać Scala / LiftWeb / Sbt i chciałbym zaimportować projekt Sbt do IntelliJ Idea. Właściwie udało mi się zaimportować mój projekt na dwa różne sposoby:

1) z Mavenem. Stworzyłem projekt Maven, a przede wszystkim stworzyłem projekt Sbt, który następnie zaimportowałem do IntelliJ. Mogłem wtedy łatwo uruchomić, zatrzymać serwer molo i zająć się innymi rzeczami. Ale nie tego chcę. Chcę robić to samo, tylko bez Mavena. To mnie prowadzi

2) z Eclipse. Stworzyłem więc nowy projekt Sbt (z małym skryptem, który napisałem, konfigurując projekt Sbt jako WebProject). Następnie użyłem wtyczki sbt-eclipsify, aby „przekonwertować” projekt na Eclipse, który następnie zaimportowałem do IntelliJ (istniejące źródło -> eclipse). Ale problemy zaczęły się tutaj: nie mogę uruchomić wtyczki IntelliJ Sbt.

Czy ktoś może mi w tym pomóc?

ksemeks
źródło
Dla kogoś, kto potrzebuje szybkiej odpowiedzi lub jeśli jest to pilna potrzeba, po prostu wejdź na github i znajdź prosty projekt scali. Pobierz, a następnie zaimportuj do swojego IDE. Powinieneś mieć dostęp do projektu scala. Szczęśliwy czas
użytkownik

Odpowiedzi:

170

Istnieją trzy podstawowe sposoby tworzenia projektu - nowoczesne wersje IntelliJ mogą importować projekt sbt po wyjęciu z pudełka, w przeciwnym razie możesz użyć wtyczki sbt do wygenerowania projektu IntelliJ lub użyć wtyczki IntelliJ Scala do utworzenia projektu sbt. Podstawowe funkcje działają od razu po wyjęciu z pudełka przy użyciu obu rozwiązań, niektóre złożone kompilacje mogą mieć problemy, więc wypróbuj inne narzędzia, aby sprawdzić, czy tam działają.

IntelliJ

IntelliJ IDEA stał się obecnie znacznie lepszy. Obecna wersja (14.0.2) obsługuje projekty sbt po wyjęciu z pudełka za pomocą wtyczki Scala. Po prostu zainstaluj wtyczkę i powinieneś być w stanie otwierać projekty Scala / sbt bez żadnych problemów.

Wtyczka Scala w obszarze Wtyczki w Preferencjach

Dzięki wtyczce po prostu wskaż projekt sbt, a IDEA zaoferuje ci kreatora do otwarcia tego rodzaju projektu.

Importuj projekt SBT

Wtyczka IntelliJ Scala

Wtyczkę IntelliJ można znaleźć tutaj http://confluence.jetbrains.com/display/SCA/Scala+Plugin+for+IntelliJ+IDEA lub można ją zainstalować bezpośrednio z poziomu IDE za pomocą okna Ustawienia -> Wtyczki. Następnie można po prostu zrobić File -> New Project -> Scala -> SBT based. IntelliJ wygeneruje podstawowy plik build.sbt, pobierze niezbędne zależności i otworzy projekt.

Wtyczka SBT

Wtyczkę SBT, która generuje projekt pomysłu na podstawie plików sbt, można znaleźć tutaj: https://github.com/mpeltonen/sbt-idea

SBT 12.0+ i 13.0+

Po prostu dodaj addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.5.2")do swojego build.sbt; nie są potrzebne żadne dodatkowe resolwery.

Starsza wersja:

SBT 0.11+

Utwórz i dodaj następujące wiersze do ~/.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")

Użyj gen-ideaw sbt do tworzenia plików projektu IDEA.

Domyślnie klasyfikatory (tj. Źródła i javadocs) zależności sbt i bibliotek są ładowane, jeśli zostaną znalezione, a odniesienia zostaną dodane do plików projektu IDEA. Jeśli nie chcesz ich pobierać / odwoływać się do nich, użyj polecenia gen-idea no-classifiers no-sbt-classifiers.


SBT 0.10.1 (według autora wtyczki 0.10.0 nie zadziała!)

Utwórz i dodaj następujące wiersze do ~ / .sbt / plugins / build.sbt:

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

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

Użyj gen-ideazadania SBT, aby utworzyć pliki projektu IDEA.

Domyślnie klasyfikatory (tj. Źródła i javadocs) zależności sbt i bibliotek są ładowane, jeśli zostaną znalezione, a odniesienia zostaną dodane do plików projektu IDEA. Jeśli nie chcesz ich pobierać / odwoływać się do nich, użyj polecenia gen-idea no-classifiers no-sbt-classifiers.


SBT 0,7

Aby go użyć, po prostu uruchom to z powłoki sbt, użyje wtyczki jako programu zewnętrznego:

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

Możesz również dodać cechę do definicji projektu, jak chcesz:

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
źródło
4
Jestem całkowicie przekonwertowany na tę wtyczkę. Użyj go w połączeniu z wtyczką idea-sbt-plugin, która pozwala delegować kompilację projektu do SBT i interaktywnie używać SBT z okna narzędzi w IDEA. Wersja 0.2.0-SNAPSHOT sbt-idea rozwiązuje kilka drobnych niedogodności - tworzenie projektu nadrzędnego i zachowanie ręcznej konfiguracji IntelliJ.
retronim
Dziękuję za tę wtyczkę. To naprawdę pomocne!
ksemeks
4
Cofam odpowiedź. To świetna wtyczka i teraz jej używam za każdym razem.
Synesso
1
Dodałem odpowiedź dla SBT 0.10.0, która jest zupełnie inna niż SBT 0.7.x + stackoverflow.com/questions/4250318/ ...
opyate
Dzięki opyate, zaktualizowałem mój post zgodnie z twoim komentarzem
Steve Gury
11

Na razie robię to ręcznie. To całkiem proste.

  1. Utwórz projekt za pomocą SBT
  2. Utwórz nowy projekt IDEA z tą samą ścieżką główną
  3. Utwórz moduł z tą samą ścieżką główną
  4. Ustaw src / main / scala jako ścieżkę src w module
  5. Ustaw src / test / scala jako ścieżkę testową w module
  6. Dodaj plik scala-library.jar jako bibliotekę
  7. Dodaj lib (jeśli jest obecny) jako katalog jar w bibliotece modułów
  8. Dodaj lib_managed / compile (jeśli jest obecny) jako katalog jar w bibliotece modułów
  9. Dodaj lib_managed / test (jeśli istnieje) jako katalog jar w bibliotece modułów

To wszystko z pamięci. Byłoby lepiej, gdyby był zautomatyzowany, ale to nic wielkiego, jak jest teraz.

Jedna uwaga: powyższe podejście nie działa dobrze z new-school sbt, tj. Wersjami 0.10 i nowszymi, ponieważ domyślnie nie kopiuje zależności do lib_managed. Możesz dodać

retrieveManaged := true

do twojego build.sbt, aby skopiować zależności do lib_managed.

Synesso
źródło
Ale czy zaczynasz swój projekt (pomost) z IntelliJ czy z terminala? Nie mogę skonfigurować programu uruchamiającego / kompilatora projektu z IDE.
ksemeks
Jeszcze jedno: zrobiłem wszystko, co napisałeś, ale IntelliJ mówi "Nie można rozwiązać symbolu ne" dla importu "import net.liftweb.LiftRules"
ksemeks
Import udało mi się obejść. Musiałem zaimportować / lib_managed / kompilować zamiast / lib_managed
ksemeks
6
Odpowiedź wycofana! Użyj wtyczki sbt-idea.
Synesso
7

Tempus fugit i IntelliJ IDEA stały się obecnie znacznie lepsze. W końcu jest rok 2015, prawda?

Mimo, że najnowsza wersja IntelliJ IDEA 14.0.2 Podpory SBT projektów po wyjęciu z pudełka z wtyczki Scala . Po prostu zainstaluj wtyczkę i powinieneś być w stanie otwierać projekty Scala / sbt bez większych problemów.

Wtyczka Scala w obszarze Wtyczki w Preferencjach

Używam wersji wtyczki z wczesnego dostępu, czyli 1.2.67.6.EAP w momencie pisania.

Za pomocą wtyczki wystarczy wskazać projekt sbt, a IDEA zaoferuje kreator do otwierania tego rodzaju projektów.

Importuj projekt SBT

O sbt-idea w sbt 0.12.4

W przypadku sbt 0.12.4 ogólnosystemowy plik konfiguracyjny wtyczki - ~/.sbt/plugins/build.sbtlub PROJECT_DIR/project/plugins.sbt- powinien zawierać następujące wiersze:

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

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

Uruchom, sbt gen-ideaaby wygenerować pliki projektu IDEA.

Więcej aktualnych informacji znajdziesz na stronie wtyczki sbt-idea . Możesz również znaleźć mój wpis na blogu Importowanie projektu opartego na sbt do IntelliJ IDEA 13 (z sbt-idea, Scala 2.11 i sbt 0.12) .

Jacek Laskowski
źródło
Podczas tworzenia nowego projektu. Po sbt gen-idea projekt jest pusty. Brak struktury, nie src, folder testowy. I to jest kiepskie ...
ses
Jak stworzyłeś projekt? Jaka jest struktura katalogów i pliki w nich zawarte?
Jacek Laskowski
Jest po prostu pusty. Musiałem zrobić to ręcznie "main / scala / src". Ale mogę z tym żyć.
sesja
Możesz użyć github.com/n8han/giter8 jako metody ładowania początkowego projektu sbt. sbt może mieć pusty katalog jako główny projekt, a main / scala / src nie jest potrzebny - po prostu umieść swoje pliki Scala w głównym katalogu, aby sbt mógł je wybrać.
Jacek Laskowski
5

Dla sbt 0.7

Zobacz odpowiedź w innym miejscu na tej stronie .

Dla sbt 0.10

Sklonuj i zbuduj pomysł sbt Ismaela:

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

Utwórz katalog lib wtyczki SBT, jeśli jeszcze go nie masz

mkdir -p  ~/.sbt/plugins/lib

Skopiuj tutaj słoik zbudowany w kroku pierwszym

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

Uruchom ponownie lub przeładuj sbt, a następnie możesz uruchomić gen-idea(lub gen-idea with-classifiersjeśli chcesz, aby źródła i javadoc również były w intelliJ)

Źródło: sugestia handlarzy na grupie wiadomości .

W samym IntelliJ IDEA 13.x

Obecnie w IDEA można otworzyć projekt oparty na SBT. Stworzy niezbędny projekt i moduły oraz będzie aktualizować Twoje zależności za każdym razem, gdy wprowadzisz zmiany w skryptach kompilacji.

opyatować
źródło
2

Po prostu przeszedłem cały ten ból. Spędzam dni próbując stworzyć akceptowalne środowisko i doszedłem do wniosku, że ENSIME, SBT i JRebel będą przez jakiś czas moim środowiskiem programistycznym. Tak, wraca do Emacsa, ale ENSIME zmienia to w trochę lub pomysł z refaktoryzacją, obsługą debugowania, nawigacją itp. Nie jest tak dobry jak Eclipse (Java), ale jeśli wtyczki Scala nie działają lepiej, to najlepsze, jakie mamy.

Dopóki środowiska programistyczne Scala nie staną się tabu (Eclipse lub IntelliJ), nie będę się tym przejmować. Są po prostu zbyt wadliwe.

Zobacz dyskusję na stronie windy.

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

W ramach tego wątku znajduje się link do HOWTO dla IntelliJ, ale chociaż działa, jest wiele spraw, które sprawiają, że jest mniej przydatny.

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

andyczerwonka
źródło
Już to przeczytałem. Ten artykuł używa mavena, który udało mi się uruchomić. Próbuję teraz zrobić to samo, tylko z kimś, bez maven.
ksemeks
Mogę skonfigurować projekt dla IntelliJ, aby go używać, ale nie mogę uruchomić kompilatora / programu uruchamiającego SBT.
ksemeks
Jeśli chodzi o ENSIME: czy łatwo jest rozpocząć pracę? Raz próbowałem, ale nigdy nie pracowałem z emacsem, więc było to dla mnie trochę trudne. czy praca z emacsem jest przesłanką?
ksemeks
Poniższy link poprowadzi Cię przez konfigurację SBT. To zadziałało dla mnie, ale znowu praca z SBT i IntelliJ w sposób niezintegrowany jest tak naprawdę jak używanie dwóch oddzielnych narzędzi, co ENSIME z SBT jest znacznie bardziej naturalne. heikoseeberger.blogspot.com/2010/08/…
andyczerwonka
2

Odpowiedzi są stare jak na rok 2014. W IntelliJ 13.x wtyczka Scala jest w wersji 0.41.2 (zawiera SBT).

Moja wersja jest 0.13.5 SBT (zacisk: sbt sbtVersion)

Przejdź do folderu głównego projektu i wejdź do terminala

sbt idea

Zobaczysz dwa nowe ukryte foldery .idea i .idea_modules .

Następnie w IntelliJ, File> Open> wybierz projekt. Powinien bez problemu otworzyć projekt.

Raymond Chenon
źródło