Как мне построить проект, который использует sbt в качестве системы сборки? - PullRequest
5 голосов
/ 06 декабря 2011

Я скачал проект, который использует sbt в качестве своей системы сборки, и я хочу собрать его.Вы могли бы подумать, что это будет так же просто, как набрать «sbt» или что-то в этом роде, но нет.

Я подумал, что добавлю вопрос, потому что это может занять буквально часы, чтобы понять это самостоятельно.Я не шучу.

Ответы [ 3 ]

6 голосов
/ 07 декабря 2011

ТЛ; др:

sbt compile

Если вы хотите запустить его:

sbt run

Чтобы увидеть, какие еще цели доступны:

sbt tasks

Чтобы получить некоторую (другую) помощь, но в основном предназначенную для команд, набираемых с консоли sbt (т. Е. При запуске sbt без параметров):

sbt help

Все это предполагает версию sbt> = 0.10.0. Чтобы увидеть, какая версия sbt используется, выполните:

grep sbt.version project/build.properties

Если такого файла нет и в базовом каталоге (не в каталоге проекта) есть файл с расширением ".sbt", то он> = 0.10.0. Конечно, если работает grep, он должен сообщить вам версию.

6 голосов
/ 06 декабря 2011

Во-первых, вы захотите использовать sbt-extras , потому что это автоматически загружает и использует правильную версию sbt.Попытка использовать неправильную версию sbt (более новую или более старую, чем требуется для проекта, который вы пытаетесь создать) не обязательно сработает и может вызвать странные ошибки.

Запустите ее:

~/path/to/sbt-extras/sbt

Дождитесь его запуска и загрузите все.Если вам нужно использовать аутентифицированный прокси, вам нужно отредактировать скрипт, указав имя пользователя и пароль для прокси.

Проверьте версию Scala, которая, по мнению sbt , необходимапостроить против (в конце вывода, если все работает).Если это нормально, хорошо, вам не нужно ничего делать.Если это не так, вы можете временно указать версию явно с помощью ++, например:

++2.8.1

(Если вы хотите сделать это постоянным, вы можете редактировать файлы определений сборки, но так как это требует созданияизменение файлов под управлением версией, это может быть не то, что вы хотите.)

Теперь, если вы используете старую версию sbt, не пропустите следующий шаг!Если вы это сделаете, вы можете получить странные ошибки.

update

Теперь вы можете собрать и протестировать то, что вы создали:

test

Если вы получите сообщение об ошибке «Filename too long»,это не специфическая для sbt проблема, это проблема scala, которая чаще всего затрагивает пользователей Ubuntu (технически, для пользователей Unbuntu это обычно связано с домашними каталогами, зашифрованными с помощью encfs).Если вы используете Scala> = 2.9, отредактируйте сборку, чтобы использовать параметр командной строки scalac, который позволяет указать максимальную длину имени файла.В противном случае, если вы работаете в Linux, вы можете перенаправить сборку в / dev / shm или / tmp, выполнив эти команды в приглашении оболочки ( не background sbt с CTRL+ Z в Unix, потому что может показаться, что он перестает работать должным образом):

rm -rf target
ln -s /dev/shm target

(возможно, вам придется выполнять эти команды в проекте / сборке вместо этого или также.)

На самом деле,Вероятно, лучше и, возможно, даже более безопасно создать подкаталог / dev / shm или / tmp и использовать его вместо этого.

Результат компиляции должен появиться в target.Затем вы можете захотеть запустить его, если это то, что вы можете запустить:

run

Если все выглядит хорошо, вы можете опционально опубликовать результат локально, так что результат может быть автоматически выбран другими сборками sbt.:

publish-local
3 голосов
/ 06 декабря 2011

Не думаю, что смогу объяснить это лучше, чем Руководство по началу работы . Пожалуйста, прочитайте первые 6 частей, которые не должны быть слишком длинными, чтобы запустить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...