Я работаю с SBT 0,13 , поэтому ... ваш пробег может отличаться.
стандартное поведение sbt
То, что вы испытываете, является поведением sbt по умолчанию. Инструмент ожидает, что файлы проекта уже находятся на месте или, когда нет файлов проекта, он не потрудится создать их - значения по умолчанию просто применяются к текущему каталогу, который фактически становится каталогом проекта для проекта, называемого именем каталога, в котором он находится. SBT открывает оболочку sbt.
jacek:~/sandbox/stackoverflow/testaaa
$ tree
.
0 directories, 0 files
jacek:~/sandbox/stackoverflow/testaaa
$ sbt
[info] Loading global plugins from /Users/jacek/.sbt/0.13/plugins
[info] Updating {file:/Users/jacek/.sbt/0.13/plugins/}global-plugins...
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[info] Set current project to testaaa (in build file:/Users/jacek/sandbox/stackoverflow/testaaa/)
[testaaa]>
Цитирование Запуск из официальной документации SBT.
Запуск sbt без аргументов командной строки запускает его в интерактивном режиме
Режим. Интерактивный режим имеет командную строку (с завершением вкладки и
история!).
Пример
В вашем случае, когда вы запустили sbt в /Users/qui/Documents/Programming/test2/
, он молча предположил, что это каталог проекта, и применил настройки по умолчанию.
Следующий сеанс sbt также находится в каталоге test2
. Я использую help
, чтобы отобразить справку клавиши настройки, а затем использую клавишу, чтобы отобразить ее значение.
jacek:~/sandbox/stackoverflow/test2
$ tree
.
0 directories, 0 files
jacek:~/sandbox/stackoverflow/test2
$ sbt
[info] Loading global plugins from /Users/jacek/.sbt/0.13/plugins
[info] Set current project to test2 (in build file:/Users/jacek/sandbox/stackoverflow/test2/)
[test2]> help name
Project name.
[test2]> name
[info] test2
[test2]> help organization
Organization/group ID.
[test2]> organization
[info] default
[test2]> help version
The version/revision of the current module.
[test2]> version
[info] 0.1-SNAPSHOT
[test2]> help scalaVersion
The version of Scala used for building.
[test2]> scalaVersion
[info] 2.10.2
(я изменил приглашение, поэтому перед проектом >
отображается имя проекта, т. Е. Имя каталога, в котором запущен sbt).
Вы можете изменить значение ключа с помощью команды set
, которая оценивает настройку и применяет ее к текущему проекту.
[test2]> help set
set [every] <setting-expression>
Applies the given setting to the current project:
1) Constructs the expression provided as an argument by compiling and loading it.
2) Appends the new setting to the current project's settings.
3) Re-evaluates the build's settings.
This command does not rebuild the build definitions, plugins, or configurations.
It does not automatically persist the setting(s) either.
To persist the setting(s), run 'session save' or 'session save-all'.
If 'every' is specified, the setting is evaluated in the current context
and the resulting value is used in every scope. This overrides the value
bound to the key everywhere.
[test2]> set scalaVersion := "2.10.3"
[info] Defining *:scalaVersion
[info] The new value will be used by *:allDependencies, *:dependencyUpdatesData and 11 others.
[info] Run `last` for details.
[info] Reapplying settings...
[info] Set current project to test2 (in build file:/Users/jacek/sandbox/stackoverflow/test2/)
[test2]> scalaVersion
[info] 2.10.3
В другой вопрос о StackOverflow @ regis-jean-gilles показал, как установить другие настройки с помощью команды set
.
[test2]> set name := "My test2 sbt project"
[info] Defining *:name
[info] The new value will be used by *:description, *:normalizedName and 8 others.
[info] Run `last` for details.
[info] Reapplying settings...
[info] Set current project to My test2 sbt project (in build file:/Users/jacek/sandbox/stackoverflow/test2/)
[test2]> set version := "1.0"
[info] Defining *:version
[info] The new value will be used by *:isSnapshot, *:projectId and 5 others.
[info] Run `last` for details.
[info] Reapplying settings...
[info] Set current project to My test2 sbt project (in build file:/Users/jacek/sandbox/stackoverflow/test2/)
[test2]> set scalaVersion := "2.10.3"
[info] Defining *:scalaVersion
[info] The new value will be used by *:allDependencies, *:dependencyUpdatesData and 11 others.
[info] Run `last` for details.
[info] Reapplying settings...
[info] Set current project to My test2 sbt project (in build file:/Users/jacek/sandbox/stackoverflow/test2/)
[test2]> session save
[info] Reapplying settings...
[info] Set current project to My test2 sbt project (in build file:/Users/jacek/sandbox/stackoverflow/test2/)
[test2]> exit
Файл build.sbt
будет содержать все настройки, как если бы они были установлены там.
$ cat build.sbt
name := "My test2 sbt project"
version := "1.0"
scalaVersion := "2.10.3"
По умолчанию sbt создает различные файлы в каталоге target
. Когда вы заглядываете в каталог target
, там нет файлов - просто пустой каталог. То же самое относится к project
, который также может содержать или не содержать каталог target
. Предполагается, что они доступны, а если нет, они создаются по умолчанию.
Когда вы изменяете настройку в интерактивной оболочке sbt (с помощью set
), вы можете сохранить сеанс с помощью session save
.
[test2]> help session
session <command>
Manipulates session settings, which are temporary settings that do not persist past the current sbt execution (that is, the current session).
Valid commands are:
clear, clear-all
Removes temporary settings added using 'set' and re-evaluates all settings.
For 'clear', only the settings defined for the current project are cleared.
For 'clear-all', all settings in all projects are cleared.
list, list-all
Prints a numbered list of session settings defined.
The numbers may be used to remove individual settings or ranges of settings using 'remove'.
For 'list', only the settings for the current project are printed.
For 'list-all', all settings in all projets are printed.
remove <range-spec>
<range-spec> is a comma-separated list of individual numbers or ranges of numbers.
For example, 'remove 1,3,5-7'.
The temporary settings at the given indices for the current project are removed and all settings are re-evaluated.
Use the 'list' command to see a numbered list of settings for the current project.
save, save-all
Makes the session settings permanent by writing them to a '.sbt' configuration file.
For 'save', only the current project's settings are saved (the settings for other projects are left alone).
For 'save-all', the session settings are saved for all projects.
The session settings defined for a project are appended to the first '.sbt' configuration file in that project.
If no '.sbt' configuration file exists, the settings are written to 'build.sbt' in the project's base directory.
[test2]> session save
[info] Reapplying settings...
[info] Set current project to test2 (in build file:/Users/jacek/sandbox/stackoverflow/test2/)
После этого сохраняется build.sbt
с вашими настройками. Это может быть хорошей отправной точкой для дальнейшей настройки проекта.
jacek:~/sandbox/stackoverflow/test2
$ cat build.sbt
scalaVersion := "2.10.3"
Typesafe Activator
Согласно домашней странице активатора Typesafe :
Typesafe Activator - это инструмент на основе браузера или командной строки, который помогает
разработчики начинают работу с Typesafe Reactive Platform.
Под прикрытием Активатор представляет собой пользовательский интерфейс, построенный поверх sbt , как было продемонстрировано Джошом Сьюертом в скриншоте Представляем sbt 0.13.2 .
Похоже, что это единственное благословенное решение для настройки проектов sbt из множества шаблонов, доступных в Activator.
giter8 - шаблоны проектов (макетов) sbt
Если вам, однако, нужна некоторая помощь для разметки структуры каталогов и установки готового к использованию проекта, вы можете использовать giter8 , это инструмент командной строки для применения определенных шаблонов на github
Скажем, вы хотите создать проект с scalaz зависимостью. Вы можете использовать adinapoli / scalaz-revolver (см. список доступных шаблонов ).
jacek:~/sandbox/stackoverflow
$ g8 adinapoli/scalaz-revolver
Simple scala project with sbt-revolver
organization [org.example]: pl.japila
name [Scala sbt-revolver project]:
scala_version [2.9.2]: 2.10.3
version [0.1-SNAPSHOT]:
Template applied in ./scala-sbt-revolver-project
jacek:~/sandbox/stackoverflow
$ cd scala-sbt-revolver-project/
jacek:~/sandbox/stackoverflow/scala-sbt-revolver-project
$ tree
.
├── README
├── build.sbt
├── project
│ ├── Build.scala
│ ├── build.properties
│ └── plugins.sbt
└── src
└── main
└── scala
└── pl
└── japila
└── ScalaSbtrevolverProject.scala
6 directories, 6 files
См. Создайте каталог проекта с исходным кодом , чтобы узнать больше.
np - создание нового проекта sbt стало простым (r)
Как указано в комментариях к @ 0__ ниже, есть еще один проект, направленный на упрощение создания новых проектов в sbt - np . Кажется, это именно то, что вам нужно.
В https://github.com/softprops/np#for-sbt-013 есть полное описание того, что необходимо для его настройки и создания новых проектов sbt с помощью утилиты, которая сводится к:
Регистрация плагина sbt. Добавьте следующее к ~/.sbt/0.13/plugins/np.sbt
.
addSbtPlugin("me.lessis" % "np" % "0.2.0")
Определить пользовательские глобальные переопределения в ~/.sbt/0.13/np.sbt
. Добавьте в файл следующее.
seq(npSettings:_*)
(NpKeys.defaults in (Compile, NpKeys.np)) ~= {
_.copy(org="me.lessis", version="0.1.0-SNAPSHOT")
}
Используйте команду плагина np - np
. Создайте пустой каталог для проекта sbt и запустите sbt np
.
jacek:~/sandbox/stackoverflow
$ mkdir np-sandbox/
jacek:~/sandbox/stackoverflow
$ cd np-sandbox/
jacek:~/sandbox/stackoverflow/np-sandbox
$ sbt np
[info] Loading global plugins from /Users/jacek/.sbt/0.13/plugins
[info] Set current project to np-sandbox (in build file:/Users/jacek/sandbox/stackoverflow/np-sandbox/)
[info] Generated build file
[info] Generated source directories
[success] Total time: 0 s, completed Dec 7, 2013 12:51:42 PM
jacek:~/sandbox/stackoverflow/np-sandbox
$ tree
.
├── build.sbt
├── src
│ ├── main
│ │ ├── resources
│ │ └── scala
│ └── test
│ ├── resources
│ └── scala
└── target
└── streams
└── compile
└── np
└── $global
└── out
12 directories, 2 files
jacek:~/sandbox/stackoverflow/np-sandbox
$ cat build.sbt
organization := "me.lessis"
name := "default"
version := "0.1.0-SNAPSHOT"