Как создать проект SBT с IntelliJ Idea? - PullRequest
144 голосов
/ 23 ноября 2010

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

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

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

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

Ответы [ 7 ]

170 голосов
/ 23 ноября 2010

Существует три основных способа создания проекта: современные версии 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 Plugin

Плагин 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)
   // ...
}
11 голосов
/ 23 ноября 2010

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

  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 new-school, то есть версиями 0.10 и новее,потому что он не копирует зависимости в lib_managed по умолчанию.Вы можете добавить

retrieveManaged := true

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

7 голосов
/ 15 июля 2013

Tempus fugit и IntelliJ IDEA стали намного лучше в наши дни. Ведь 2015 год, не правда ли?

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

Scala plugin under Plugins in Preferences

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

С помощью плагина просто укажите на проект sbt, и IDEA предложит вам мастера, чтобы открыть проект такого типа.

Import sbt project

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

5 голосов
/ 29 июня 2011

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

2 голосов
/ 01 декабря 2014

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

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

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

sbt idea

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

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

2 голосов
/ 23 ноября 2010

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

0 голосов
/ 20 мая 2016

Прежде чем приступить к созданию проекта SBT, убедитесь, что плагин Scala загружен и включен в IntelliJ IDEA.

ниже ссылка объясняет все, что вам нужно знать.

https://www.jetbrains.com/help/idea/2016.1/getting-started-with-sbt.html

...