Я выхожу из шкафа на этом! Я не понимаю СБТ. Там, я сказал, теперь помогите мне, пожалуйста.
Все дороги ведут в Рим, и это то же самое для 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
и репозитории), и думаю, что это спасет следующего парня, приходящего таким образом, на множество трудностей, если это можно объяснить человеческими терминами.
Самое главное, наверное, как вы можете найти правильные репозитории и версии для включения в свой проект? Я просто вытаскиваю мачете и начинаю взламывать свой путь вперед? Я часто нахожу проекты, которые включают все и кухонную раковину.
Для зависимостей, основанных на 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.
Убедитесь, что вы понимаете:
{<build-uri>}<project-id>/config:key(for task-key)
SettingKey
, TaskKey
, InputKey
) - прочитайте раздел "Ключи задачи" в http://www.scala-sbt.org/release/docs/Getting-Started/Basic-DefХраните эти 4 страницы в любое время, чтобы вы могли прыгать и искать различные определения и примеры:
Максимально используйте show
и inspect
и завершение вкладки, чтобы ознакомиться с фактическими значениями параметров, их зависимостей, определений и соответствующих параметров. Я не верю, что отношения, которые вы обнаружите с помощью inspect
, документированы где угодно. Если есть лучший способ, я хочу знать об этом.
Я использую sbt:
project
папки с MyProject.scala
файлом для настройки SBT. Я предпочитаю это по сравнению с подходом build.sbt
- это scala и более гибкийproject/plugins.sbt
и добавьте соответствующий плагин для вашей IDE. Либо sbt-eclipse, sbt-idea или ensime-sbt-cmd, чтобы вы могли создавать файлы проекта для eclipse, intellij или ensime.Я не беспокоюсь о проверке файлов проекта IDE, так как они генерируются sbt, но могут быть причины, по которым вы хотите это сделать.
Вы можете увидеть пример, подобный этому, здесь.
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)