Может кто-нибудь объяснить, как правильно использовать SBT?

102

Я выхожу из шкафа на этом! Я не понимаю СБТ. Там, я сказал, теперь помогите мне, пожалуйста.

Все дороги ведут в Рим, и это то же самое для SBT: для начала SBT есть SBT, SBT Launcher, SBT-extras и т.д., а затем есть разные способы включить и решить на репозитории. Есть ли лучший способ?

Я спрашиваю, потому что иногда я немного теряюсь. Документация SBT очень полная и полная, но я не знаю, когда использовать build.sbt или project/build.properties или project/Build.scala или project/plugins.sbt.

Тогда становится весело, есть Scala-IDE и SBT - Каков правильный способ их использования? Что на первом месте, курица или яйцо?

Самое главное, наверное, как вы находите нужные репозитории и версии для включения в свой проект? Я просто вытаскиваю мачете и начинаю взламывать свой путь вперед? Я довольно часто нахожу проекты, которые включают в себя все и кухонную раковину, а затем я понимаю - я не единственный, кто немного потерял.

В качестве простого примера, прямо сейчас, я начинаю новый проект. Я хочу использовать последние функции SLICK и Scala, и для этого, вероятно, потребуется последняя версия SBT. Какая разумная точка для начала и почему? В каком файле я должен его определить и как он должен выглядеть? Я знаю, что могу заставить это работать, но мне бы очень хотелось, чтобы экспертное мнение о том, куда все должно идти (почему он должен идти, будет бонус).

Я использую SBT для небольших проектов уже более года. Я использовал SBT, а затем SBT Extras (так как некоторые головные боли магически исчезают), но я не уверен, почему я должен использовать тот или иной. Я просто немного расстроен из-за того, что не понимаю, как все сочетается (SBT и репозитории), и думаю, что это спасет следующего парня, приходящего таким образом, на множество трудностей, если это можно объяснить человеческими терминами.

  • 2
    Что именно вы имеете в виду под словом «есть Scala-IDE и SBT»? Вы определяете свой проект с помощью sbt, и sbt может генерировать проект ide (eclipse oder intellij). Итак, SBT на первом месте ...
  • 2
    @ Ян, я упоминал об этом, потому что Scala-IDE использует SBT в качестве менеджера сборки. См. На сайтеаты [mbell.com/spaces/scala-ide/wiki/SBT-based_build_manager] ниже в посте, в котором они упоминают: «Нет необходимости определять файл проекта SBT». который я нашел сбивающим с толку.
Показать ещё 7 комментариев
Теги:
sbt

3 ответа

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

Самое главное, наверное, как вы можете найти правильные репозитории и версии для включения в свой проект? Я просто вытаскиваю мачете и начинаю взламывать свой путь вперед? Я часто нахожу проекты, которые включают все и кухонную раковину.

Для зависимостей, основанных на Scala, я хотел бы остановиться на рекомендациях авторов. Например: http://code.google.com/p/scalaz/#SBT указывает на использование:

libraryDependencies += "org.scalaz" %% "scalaz-core" % "6.0.4"

Или https://github.com/typesafehub/sbteclipse/ содержит инструкции по добавлению:

addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.1.0-RC1")

Для зависимостей на Java я использую http://mvnrepository.com/, чтобы узнать, что там, затем нажмите вкладку SBT. Например, http://mvnrepository.com/artifact/net.sf.opencsv/opencsv/2.3 указывает на использование:

libraryDependencies += "net.sf.opencsv" % "opencsv" % "2.3"

Затем вытащите мачете и начните взламывать свой путь вперед. Если вам повезет, вы не используете банки, которые зависят от некоторых из этих же банок, но с несовместимыми версиями. Учитывая экосистему Java, вы часто включаете в себя все и кухонную раковину, и требуется некоторое усилие для устранения зависимостей или обеспечения отсутствия необходимых зависимостей.

В качестве простого примера, прямо сейчас, я начинаю новый проект. Я хочу использовать последние функции SLICK и Scala, и для этого, вероятно, потребуется последняя версия SBT. Какова нормальная точка для начала и почему?

Я думаю, что здравомыслящий момент заключается в постепенно повышать устойчивость к sbt.

Убедитесь, что вы понимаете:

Храните эти 4 страницы в любое время, чтобы вы могли прыгать и искать различные определения и примеры:

Максимально используйте show и inspect и завершение вкладки, чтобы ознакомиться с фактическими значениями параметров, их зависимостей, определений и соответствующих параметров. Я не верю, что отношения, которые вы обнаружите с помощью inspect, документированы где угодно. Если есть лучший способ, я хочу знать об этом.

26

Я использую sbt:

  1. Используйте sbt-extras - просто получите скрипт оболочки и добавьте его в корневой каталог вашего проекта
  2. Создание project папки с MyProject.scala файлом для настройки SBT. Я предпочитаю это по сравнению с подходом build.sbt - это scala и более гибкий
  3. Создайте файл project/plugins.sbt и добавьте соответствующий плагин для вашей IDE. Либо sbt-eclipse, sbt-idea или ensime-sbt-cmd, чтобы вы могли создавать файлы проекта для eclipse, intellij или ensime.
  4. Запустите sbt в корне вашего проекта и сгенерируйте файлы проекта для вашей IDE
  5. прибыль

Я не беспокоюсь о проверке файлов проекта IDE, так как они генерируются sbt, но могут быть причины, по которым вы хотите это сделать.

Вы можете увидеть пример, подобный этому, здесь.

  • 0
    Спасибо за хороший ответ. Я принял другой ответ, потому что он охватывает больше вопросов, и проголосовал за ваше дело, это действительно хорошо. Я бы принял оба, если бы мог.
1

Use Typesafe Activator, причудливый способ вызова sbt, который поставляется с шаблонами проектов и семенами: https://typesafe.com/activator

Activator new

Fetching the latest list of templates...

Browse the list of templates: http://typesafe.com/activator/templates
Choose from these featured templates or enter a template name:
 1) minimal-java
 2) minimal-scala
 3) play-java
 4) play-scala
(hit tab to see a list of all templates)
  • 4
    Я неравнодушен к мысли, что, если сомневаешься, добавление большего количества волшебства в микс вряд ли решит твои проблемы.

Ещё вопросы

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