Як створити проект SBT за допомогою IntelliJ Idea?


146

Я щойно розпочав розробку Scala / LiftWeb / Sbt, і я хотів би імпортувати проект Sbt в IntelliJ Idea. Насправді мені вдалося імпортувати свій проект двома різними способами:

1) з Мейвен. Я створив проект Maven, і, крім цього, створив проект Sbt, який потім імпортував у IntelliJ. Тоді я міг легко запустити, зупинити приструнковий сервер та робити інші речі. Але це не те, що я хочу. Я хочу зробити те саме, просто Maven-free. Це привело мене до

2) з затемненням. Отже, я створив новий проект Sbt (за допомогою невеликого сценарію, який я написав, налаштувавши проект Sbt на WebProject). Тоді я використовував плагін sbt-eclipsify, щоб 'конвертувати' проект для Eclipse, який потім імпортував у IntelliJ (існуюче джерело -> eclipse). Але тут почалися проблеми: я не можу змусити плагін IntelliJ Sbt працювати.

Хтось може мені допомогти у цьому?


Для того, хто потребує швидкої відповіді або якщо це нагальна вимога, просто перейдіть до github і знайдіть простий проект масштабування. Завантажте та потім імпортуйте у свій IDE. Ви повинні мати доступ до проекту Scala. Щасливий час
Користувач

Відповіді:


170

Існує три основні способи створення проекту - сучасні версії IntelliJ можуть імпортувати sbt-проект із вікна, інакше ви можете використовувати плагін sbt для створення проекту IntelliJ, або використовувати плагін IntelliJ Scala для створення проекту sbt. Основні функції працюють з коробки, використовуючи обидва рішення, деякі складні складання можуть мати проблеми, тому спробуйте інші інструменти, щоб перевірити, чи працює він там.

IntelliJ

На сьогодні IntelliJ IDEA стала набагато кращою. Поточна версія (14.0.2) підтримує sbt проекти з коробки за допомогою плагіна Scala. Просто встановіть плагін, і ви зможете без проблем відкривати проекти Scala / sbt.

Плагін Scala в розділі "Плагіни в налаштуваннях"

За допомогою плагіна просто вкажіть на sbt-проект, і IDEA запропонує вам майстра відкрити такий проект.

Проект імпорту sbt

Плагін IntelliJ Scala

Плагін IntelliJ можна знайти тут http://confluence.jetbrains.com/display/SCA/Scala+Plugin+for+IntelliJ+IDEA або його можна встановити безпосередньо в межах 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.sbtАБОPROJECT_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
Я повністю перетворюю цей плагін. Використовуйте його в поєднанні з ідеєю-sbt-плагін, який дозволяє делегувати побудову проекту на SBT та інтерактивно використовувати SBT у вікні інструментів IDEA. Версія 0.2.0-SNAPSHOT sbt-idea виправляє кілька невеликих роздратовань - створення батьківського проекту та збереження вручну конфігурації IntelliJ.
ретронім

Дякую за цей плагін Це справді helfpul!
ksemeks

4
Я відкликаю свою відповідь. Це чудовий плагін, і тепер я його використовую кожен раз.
Синесо

1
Я додав відповідь на SBT 0.10.0, яка повністю відрізняється від SBT 0.7.x + stackoverflow.com/questions/4250318 / ...
opyate

Дякую opyate, я оновив свій пост відповідно до Вашого коментаря
Стів Гурі,

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 говорить "Не вдається вирішити символ ne" для імпорту "import net.liftweb.LiftRules"
ksemeks

Мені вдалося обійти імпорт. Мені довелося імпортувати / lib_managed / compile замість / lib_managed
ksemeks

6
Відповідь відкликано! Використовуйте плагін sbt-idea.
Синесо

7

Темгус-фугіт і IntelliJ IDEA стали набагато кращими в наші дні. Зрештою, це 2015 рік, чи не так?

Сказавши це, остання версія IntelliJ IDEA 14.0.2 підтримує sbt-проекти з коробки з плагіном Scala . Просто встановіть плагін, і ви зможете без проблем відкривати проекти Scala / sbt.

Плагін Scala в розділі "Плагіни в налаштуваннях"

Я використовую версію для раннього доступу плагіна, яка становить 1.2.67.6.EAP на момент написання.

За допомогою плагіна просто вкажіть на sbt-проект, і IDEA запропонує вам майстра відкрити такий проект.

Проект імпорту sbt

Про sbt-ідею в 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-ідеєю, Scala 2.11 та sbt 0,12) .


При створенні нового проекту. Після sbt gen-ідеї проект порожній. Жодна структура, не src, тестова папка. І це кульгає ..
SES

Як ви створили проект? Яка структура каталогу та файли всередині?
Яцек Ласковський

Це просто порожньо. Мені довелося руками це "main / scala / src". Але я можу з цим жити.
ses

Ви можете використовувати github.com/n8han/giter8 як засіб завантаження проекту sbt. sbt може мати порожній каталог, оскільки основний проект, а main / scala / src не потрібен - просто розмістіть свої файли Scala в головному каталозі, щоб sbt їх обрав.
Jacek Laskowski

5

Для sbt 0,7

Відповідь дивіться в іншому місці на цій сторінці .

Для sbt 0,10

Клоніруйте і будуйте sbt-ідею Ісмаїла:

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

Створіть каталог lib плагінів sbt, якщо у вас його ще немає

mkdir -p  ~/.sbt/plugins/lib

Скопіюйте сюди вбудовану банку на першому кроці

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

Перезавантажте або перезавантажте sbt, тоді ви можете запустити gen-idea(або gen-idea with-classifiersякщо ви хочете джерела та javadoc в IntelliJ також)

Джерело: Пропозиція прихильників щодо групи повідомлень .

В самому IntelliJ IDEA 13.x

На сьогоднішній день ви можете відкрити проект на основі SBT в IDEA. Це створить необхідний проект та модулі та оновлюватиме ваші залежності кожного разу, коли ви вносите зміни до сценаріїв збірки.


2

Я просто пережив весь цей біль. Я провожу дні, намагаючись підняти прийнятне середовище, і прийшов до висновку, що ENSIME, SBT та JRebel ще деякий час стануть моїм середовищем розвитку. Так, він повертається до Emacs, але ENSIME перетворює це на трохи або ідею з рефакторингом, підтримкою налагодження, навігацією тощо. Це ніде не так добре, як Eclipse (Java), але, якщо плагіни Scala не працюють краще, це найкращий у нас.

Поки середовища розробки Scala не придушаться (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, withot maven.
ksemeks

Я можу налаштувати проект для IntelliJ для його використання, але не можу приступити до роботи компілятору / запуску sbt.
ksemeks

Що стосується ENSIME: чи легко працювати? Я намагався один раз, але я ніколи не працював з emacs, тому мені було трохи важко. працює з emacs приміщенням?
ksemeks

Наступне посилання перенесе вас через налаштування SBT. Це працювало для мене, але знову працювати з SBT та IntelliJ неінтегровано - це як би використовувати два окремі інструменти, що ENSIME з SBT набагато природніше. heikoseeberger.blogspot.com/2010/08/…
andyczerwonka

2

Відповіді старі для 2014 року. В IntelliJ 13.x плагін Scala є версією 0.41.2 (SBT включений).

Моя SBT версія 0.13.5 (клема: sbt sbtVersion)

Перейдіть до кореневої папки проекту та введіть у терміналі

sbt idea

Ви побачите дві нові приховані папки .idea та .idea_modules .

Потім в IntelliJ, Файл> Відкрити> виберіть проект. Він повинен відкрити проект без проблем.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.