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

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

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

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

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

Ответы

Ответ 1

Существует три основных способа создания проекта: современные версии IntelliJ могут импортировать проект sbt из коробки, иначе вы можете использовать плагин sbt для создания проекта IntelliJ или использовать плагин IntelliJ Scala для создания проекта sbt, Основные функции работают из коробки с использованием обоих решений, некоторые сложные сборки могут иметь проблемы, поэтому попробуйте другие инструменты, чтобы увидеть, работает ли она там.

IntelliJ

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

Scala plugin under Plugins in Preferences

С плагином просто укажите проект sbt, и IDEA предложит вам мастер для открытия такого проекта.

Import sbt project

IntelliJ Scala Плагин

Плагин IntelliJ можно найти здесь http://confluence.jetbrains.com/display/SCA/Scala+Plugin+for+IntelliJ+IDEA или может быть установлен directoly из среды 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)
   // ...
}

Ответ 2

Пока я делаю это вручную. Это довольно просто.

  • Создайте проект с помощью SBT
  • Создайте новый проект IDEA с тем же корневым корнем
  • Создайте модуль с одним корневым корнем
  • Установите src/main/ scala как путь src в модуле
  • Установите src/test/ scala в качестве тестового пути в модуле
  • Добавить scala -library.jar в качестве библиотеки
  • Добавить lib (если он присутствует) как каталог jar в библиотеке модулей
  • Добавить lib_managed/compile (если он присутствует) как каталог jar в библиотеке модулей
  • Добавить lib_managed/test (если он присутствует) как каталог jar в библиотеке модулей

Что это из памяти. Было бы лучше, если бы оно было автоматизировано, но это не так важно, как сейчас.

Одно примечание: вышеупомянутый подход не очень хорошо работает с новыми школьными sbt, то есть версиями 0.10 и новее, потому что он не копирует зависимости в lib_managed по умолчанию. Вы можете добавить

retrieveManaged := true

в файл build.sbt, чтобы скопировать зависимости в lib_managed.

Ответ 3

Tempus fugit и IntelliJ IDEA в наши дни стали намного лучше. В конце концов, не так ли?

Сказав, что последняя версия IntelliJ IDEA 14.0.2 поддерживает проекты sbt из коробки с плагин Scala. Просто установите плагин, и вы сможете открыть Scala/sbt проекты без особых проблем.

Scala plugin under Plugins in Preferences

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

Когда плагин просто укажет на проект sbt, и IDEA предложит вам мастер для открытия такого проекта.

Import sbt project

О sbt-idea в 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) полезно.

Ответ 4

Для sbt 0.7

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

Для sbt 0.10

Клонировать и построить Ismael sbt-idea:

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

Создайте каталог sbt plugin lib, если у вас еще нет

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)

Источник: Предложение Tackers в группе сообщений.

В IntelliJ IDEA 13.x

В настоящее время вы можете открыть проект на основе SBT в IDEA. Он создаст необходимый проект и модули и сохранит ваши зависимости в актуальном состоянии, когда вы вносите изменения в скрипты сборки.

Ответ 5

Я просто пережил всю эту боль. Я провожу дни, пытаясь получить приемлемую среду, и пришел к выводу, что 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/

Ответ 6

Ответы старые на 2014 год. В IntelliJ 13.x плагин Scala равен версии 0.41.2 (включен SBT).

Моя версия SBT 0.13.5 (терминал: sbt sbtVersion)

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

sbt idea

Вы увидите две новые скрытые папки .idea и .idea_modules.

Затем в IntelliJ, File > Open > выберите проект. Он должен открыть проект без каких-либо проблем.