Как создать проект SBT с IntelliJ Idea?

146

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

1) с мавеном. Я создал проект Maven, и, кроме того, я создал проект Sbt, который затем импортировал в IntelliJ. Затем я мог легко запустить, остановить сервер Jetty и заняться другими делами. Но это не то, что я хочу. Я хочу сделать то же самое, только без Maven. Это привело меня к

2) с затмением. Итак, я создал новый проект Sbt (с небольшим написанным мной сценарием, настроив проект Sbt как WebProject). Затем я использовал плагин sbt-eclipsify, чтобы «преобразовать» проект для Eclipse, который я затем импортировал в IntelliJ (существующий источник -> eclipse). Но проблемы начались здесь: я не могу заставить работать плагин IntelliJ Sbt.

Кто-нибудь может мне с этим помочь?

ksemeks
источник
Для тех, кому нужен быстрый ответ или, если это необходимо, просто зайдите на github и найдите простой проект scala. Загрузите, а затем импортируйте в свою 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 с помощью диалога «Настройки» -> «Плагины». После этого можно просто сделать File -> New Project -> 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
Я полностью преобразован в этот плагин. Используйте его в сочетании с idea-sbt-plugin, который позволяет делегировать сборку вашего проекта в SBT, и используйте SBT в интерактивном режиме из окна инструментов в IDEA. Версия sbt-idea версии 0.2.0-SNAPSHOT исправляет несколько небольших неприятностей - создание родительского проекта и сохранение ручной настройки IntelliJ.
ретроним
Спасибо за этот плагин. Это действительно полезно!
ksemeks
4
Я убираю свой ответ. Это отличный плагин, и теперь я использую его каждый раз.
Synesso
1
Я добавил ответ для SBT 0.10.0, который полностью отличается от SBT 0.7.x + stackoverflow.com/questions/4250318/…
опишите
Спасибо, опят, я обновил свой пост в соответствии с вашим комментарием
Стив Гури
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.

Synesso
источник
Но вы начинаете свой проект (причал) с IntelliJ или с терминала? Я не могу настроить запуск проекта / компилятор из IDE.
ksemeks
Еще одна вещь: я сделал все, что вы написали, но IntelliJ говорит: «Не удается разрешить символ ne» для импорта «import net.liftweb.LiftRules»
ksemeks
Мне удалось обойти импорт. Мне пришлось импортировать / lib_managed / compile вместо / lib_managed
ksemeks
6
Ответ отозван! Используйте плагин sbt-idea.
Synesso
7

Tempus Fugit и 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-idea, Scala 2.11 и sbt 0.12) полезной.

Яцек Ласковски
источник
При создании нового проекта. После sbt gen-idea проект пуст. Нет структуры, не src, тестовая папка. И это хромает ..
SES
Как вы создали проект? Какова структура каталогов и файлы внутри?
Яцек Ласковски
Это просто пусто. Я должен был написать «main / scala / src» руками. Но я могу жить с этим.
сес
Вы можете использовать github.com/n8han/giter8 как средство начальной загрузки проекта sbt. У sbt может быть пустой каталог в качестве основного проекта, и main / scala / src не нужен - просто поместите ваши файлы Scala в основной каталог, чтобы sbt выбрал их.
Яцек Ласковски,
5

За сб 0,7

Смотрите ответ в другом месте на этой странице .

За 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. Он создаст необходимый проект и модули и будет обновлять ваши зависимости каждый раз, когда вы вносите изменения в сценарии сборки.

opyate
источник
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/

andyczerwonka
источник
Я уже прочитал это. Эта статья использует Maven, который мне удалось получить работать. Я пытаюсь сделать то же самое сейчас, только с sbt, без Мэйвена.
Ксемекс
Я могу настроить проект для IntelliJ, чтобы использовать его, но не могу заставить работать sbt compiler / launcher.
ksemeks
Что касается ENSIME: легко ли начать работать? Я пытался один раз, но я никогда не работал с Emacs, так что это было немного сложно для меня. работает с Emacs предпосылкой?
Ксемекс
Следующая ссылка проведет вас через настройку 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, Файл> Открыть> выберите проект. Он должен открыть проект без проблем.

Рэймонд Шенон
источник