id = "sbt" name = "sbt" homepage = "https://www.scala-sbt.org" description = "sbt is built for Scala and Java projects." # sbt's own mark, at the largest favicon size its site publishes. icon = "https://www.scala-sbt.org/assets/favicon-96x96.png" executables = ["sbt", "sbtn"] [dotfiles] # Global Settings (https://www.scala-sbt.org/1.x/docs/Global-Settings.html): # "Settings that should be applied to all projects can go in # $HOME/.sbt/1.0/global.sbt (or any file in $HOME/.sbt/1.0 with a .sbt # extension)", and "The $HOME/.sbt/1.0/plugins/ directory is a global plugin # project … To add a plugin globally, create $HOME/.sbt/1.0/plugins/build.sbt # containing the dependency definitions", which may be joined by .scala sources: # "create a local plugin $HOME/.sbt/1.0/plugins/ShellPrompt.scala". # # Proxy Repositories (https://www.scala-sbt.org/1.x/docs/Proxy-Repositories.html): # "sbt requires configuration in two places to make use of a proxy repository. # The first is the ~/.sbt/repositories file". # # The 1.0 in the path is sbt's binary compatibility series, not a release # number — every sbt 1.x reads that directory. paths = [ "~/.sbt/1.0/*.sbt", "~/.sbt/1.0/plugins/", "~/.sbt/repositories", ] # plugins/ is "a full project that is included as an external dependency of # every plugin project", so building it leaves compiled output beside the # sources. exclude = [ "~/.sbt/1.0/plugins/target/", "~/.sbt/1.0/plugins/project/", ] # Publishing (https://www.scala-sbt.org/1.x/docs/Publishing.html): "The first # and better way is to load them from a file, for example: credentials += # Credentials(Path.userHome / ".sbt" / ".credentials") … The credentials # file is a properties file with keys realm, host, user, and password." The # whole file is one repository login, so it is a credential end to end. secret = ["~/.sbt/.credentials"] # No machine_lines: a global.sbt holds cross-project settings such as the shell # prompt, a default scalaVersion or a resolver, which is what a user wants on # every machine. ~/.sbt/boot and ~/.sbt/preloaded are launcher caches outside # the paths above. [commands] format = 1 label = "Run sbt" description = "Run sbt commands such as compile or test, optionally non-interactively. JVM options (-D, -J) and the sbt shell commands themselves are not modelled." quality = "ai-draft" parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = false, short_bundles = false } [[commands.source]] id = "script" kind = "help" url = "https://github.com/sbt/sbt/blob/develop/sbt" revision = "develop 2026-10 (usage text of the runner script)" evidence = """ -v | --verbose this runner is chattier --client run sbtn (native client), and start sbt server in the background --no-colors disable ANSI color codes --color=auto|always|true|false|never enable or disable ANSI color codes (sbt 1.3 and above) --supershell=auto|always|true|false|never enable or disable supershell (sbt 1.3 and above) --timings display task timings report on shutdown --mem set memory options (default: $sbt_default_mem) --jvm-debug Turn on JVM debugging, open at the given port. --batch disable interactive mode -d | --debug set sbt log level to debug --sbt-version use the specified version of sbt --java-home alternate JAVA_HOME """ [[commands.field]] id = "commands" label = "sbt commands" description = "Tasks to run in order, for example clean, compile, test. Quote a command that contains spaces. Leave empty for the interactive shell." type = "string" position = 0 multiple = true sources = ["script"] [[commands.field]] id = "batch" label = "Batch (non-interactive)" type = "boolean" option = ["--batch"] sources = ["script"] [[commands.field]] id = "client" label = "Use native client (sbtn)" type = "boolean" option = ["--client"] sources = ["script"] [[commands.field]] id = "sbt_version" label = "sbt version" type = "string" option = ["--sbt-version"] sources = ["script"] [[commands.field]] id = "java_home" label = "JAVA_HOME" type = "path" option = ["--java-home"] path = { kind = "directory", role = "input" } sources = ["script"] [[commands.field]] id = "mem" label = "Memory (MB)" type = "integer" option = ["--mem"] sources = ["script"] [[commands.field]] id = "jvm_debug" label = "JVM debug port" type = "integer" option = ["--jvm-debug"] sources = ["script"] [[commands.field]] id = "color" label = "Colors" type = "enum" option = ["--color"] choices = [{ value = "auto", label = "Auto" }, { value = "always", label = "Always" }, { value = "true", label = "True" }, { value = "false", label = "False" }, { value = "never", label = "Never" }] sources = ["script"] [[commands.field]] id = "supershell" label = "Supershell" type = "enum" option = ["--supershell"] choices = [{ value = "auto", label = "Auto" }, { value = "always", label = "Always" }, { value = "true", label = "True" }, { value = "false", label = "False" }, { value = "never", label = "Never" }] sources = ["script"] [[commands.field]] id = "timings" label = "Show task timings" type = "boolean" option = ["--timings"] sources = ["script"] [[commands.field]] id = "debug" label = "Debug log level" type = "boolean" option = ["--debug", "-d"] sources = ["script"] [[commands.field]] id = "verbose" label = "Verbose runner" type = "boolean" option = ["--verbose", "-v"] sources = ["script"] [[commands.task]] id = "batch-run" label = "Run commands in batch mode" set = { batch = [true] } lock = ["batch"] fields = ["commands", "batch", "sbt_version", "timings", "color"] required = ["commands"] [[commands.task]] id = "shell" label = "Start the interactive shell" fields = ["client", "sbt_version", "mem"] [[commands.group]] id = "basic" label = "Basic" fields = ["commands", "batch", "client", "sbt_version", "timings"] [[commands.group]] id = "advanced" label = "Advanced" fields = ["java_home", "mem", "jvm_debug", "color", "supershell", "debug", "verbose"]