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

140

Я только начинал с разработки 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 работать.

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

  • 0
    Для тех, кому нужен быстрый ответ или, если это необходимо, просто зайдите на github и найдите простой проект scala. Загрузите, а затем импортируйте в свою IDE. Вы должны иметь доступ к проекту Scala. Счастливое время
Теги:
intellij-idea
lift
sbt

7 ответов

175
Лучший ответ

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

IntelliJ

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

Изображение 6065

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

Изображение 6066

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)
   // ...
}
  • 4
    Я полностью преобразован в этот плагин. Используйте его в сочетании с idea-sbt-plugin, который позволяет делегировать сборку вашего проекта в SBT, и используйте SBT в интерактивном режиме из окна инструментов в IDEA. Версия 0.2.0-SNAPSHOT sbt-idea исправляет несколько небольших неприятностей - создание родительского проекта и сохранение ручной настройки IntelliJ.
  • 0
    Спасибо за этот плагин. Это действительно полезно!
Показать ещё 10 комментариев
11

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

  • Создайте проект с помощью 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.

  • 0
    Но вы начинаете свой проект (причал) с IntelliJ или с терминала? Я не могу настроить запуск проекта / компилятор из IDE.
  • 0
    Еще одна вещь: я сделал все, что вы написали, но IntelliJ говорит: «Не удается разрешить символ ne» для импорта «import net.liftweb.LiftRules»
Показать ещё 2 комментария
6

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

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

Изображение 6065

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

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

Изображение 6066

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

  • 0
    При создании нового проекта. После sbt gen-idea проект пуст. Нет структуры, не src, тестовая папка. И это хромает ..
  • 0
    Как вы создали проект? Какова структура каталогов и файлы внутри?
Показать ещё 2 комментария
5

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

2

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

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

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

sbt idea

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

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

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/

  • 0
    Я уже прочитал это. Эта статья использует Maven, который мне удалось получить работать. Я пытаюсь сделать то же самое сейчас, только с sbt, без Мэйвена.
  • 0
    Я могу настроить проект для IntelliJ, чтобы использовать его, но не могу заставить работать sbt compiler / launcher.
Показать ещё 2 комментария
0

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню