命令
每个命令代表一个任务,该任务运行一个或多个提供程序来完成该任务。
alias
列出别名定义(来自 rebar.config)。
示例输出
test=eunit,ct --suite=rebar_alias_SUITE,cover
check=xref,dialyzer
as
高阶任务,它接受一个配置文件名称和要在该配置文件下运行的任务列表。
compile
在确保所有依赖项都可用并获取它们(如果它们不存在)之后,compile 将编译所需的依赖项以及项目的应用程序的 .app.src 和 .erl 文件。
| 选项 | 类型 | 描述 | 
|---|---|---|
| -d/--deps_only | 无 | 仅编译依赖项,不会构建项目应用程序 | 
completion
📘
自版本 3.23.0 起
为受支持的 shell 之一生成完成文件:bash、zsh。
可以根据项目设置生成完成文件,因此自动完成功能也适用于项目中使用的所有插件,而不仅仅是默认提供程序。
要使用生成的完成文件,请运行 source path/to/generated/file。
| 选项 | 类型 | 描述 | 
|---|---|---|
| -a/--aliases | 逗号分隔的字符串列表 | 将在其上触发 rebar3 完成功能的操作系统级别别名(例如 "rebar, r3") | 
| -f/--file | 字符串 | 完成文件名。如果不是绝对路径,则相对于 _build/<profile>/目录 | 
| -s/--shell | 原子 | 指定完成文件的类型。默认情况下,它使用 $SHELL变量自动检测。有效值为bash和zsh。 | 
🚧
zsh 特定要求
确保在
.zshrc文件中调用了autoload -Uz compinit; compinit。
为了获得更好的用户体验,请设置默认自动完成并在需要时覆盖它。可以通过生成全局完成文件并在 .bashrc 或 .zshrc 中加载它来设置默认自动完成。
要生成全局(独立于项目)完成文件,请在 rebar3 项目外部运行 rebar3 completion --file path/to/global/completion/file。
clean
删除应用程序中编译的 BEAM 文件。
clean 命令默认情况下会删除顶级应用程序的 BEAM 文件。它在尊重配置文件的同时这样做,这意味着“rebar3 clean”只会清理默认配置文件,“rebar3 as test clean”只会清理测试配置文件。
| 选项 | 类型 | 描述 | 
|---|---|---|
| --all/-a | 无 | 清理所有应用程序,包括依赖项 | 
| --apps | 逗号分隔的字符串列表 | 清理特定应用程序或依赖项列表 | 
| --profile/-p | 字符串 | 指定配置文件(作为 rebar3 as clean的替代方法) | 
ct
运行位于 test/ 目录下的项目的通用测试。
大多数通用测试选项 如 Erlang 文档中 ct_run 中所述。下面描述了一些常见的选项
| 选项 | 类型 | 描述 | 
|---|---|---|
| --dir | 逗号分隔的字符串列表 | 编译并运行指定目录中的所有测试套件。 | 
| --suite | 逗号分隔的字符串列表 | 编译并运行所有指定的测试套件。必须通过完整路径指定,可以是绝对路径或相对于当前目录的相对路径。 | 
| --group | 逗号分隔的字符串列表 | 要运行的测试组。请参阅通用测试文档。 | 
| --case | 逗号分隔的字符串列表 | 要运行的测试用例列表。请参阅通用测试文档。 | 
| --spec | 逗号分隔的字符串列表 | 测试规范列表 | 
| --join_specs | 逗号分隔的字符串列表 | 类似于 --spec,但将所有规范合并到一个中并进行一次运行。 | 
| --repeat | 整数 | 重复测试的次数 | 
| --duration | 字符串(格式:HHMMSS) | 测试运行的最大允许持续时间 | 
| --until | 字符串(格式:HHMMSS) | 运行测试的截止时间 | 
| --force_stop | true | false | skip_rest | 在测试超时时强制终止 | 
| --multiply_timetraps | 整数 | 将测试的超时值扩展给定倍数。 | 
| --scale_timetraps | 布尔值 | 在使用代码覆盖率或跟踪时启用自动超时值缩放。 | 
| --abort_if_missing_suites | 布尔值 | 如果缺少测试套件,则中止测试运行(默认值:true) | 
| --sys_config | 字符串 | 应在测试运行之前由 Rebar3 应用的 OTP 应用程序配置文件列表(如 sys.config)。 | 
| --config | 逗号分隔的字符串列表 | 运行测试时要使用的配置文件。请参阅 [通用测试文档。](https://erlang.org.cn/doc/apps/common_test/index.html | 
| --allow_user_terms | 布尔值 | 允许在配置文件中使用用户定义的配置值。请参阅通用测试文档。 | 
| --decrypt_key | 字符串 | 如果配置文件已加密,请设置解密密钥。 | 
| --decrypt_file | 字符串 | 如果配置文件已加密,请指向包含解密密钥的文件。 | 
| --logdir | 字符串 | 将测试日志写入的目录。请参阅通用测试文档。 默认值: _build/test/logs | 
| --logopts | 逗号分隔的字符串列表 | 设置通用测试日志记录选项。请参阅通用测试文档。 默认值: _build/test/logs | 
| --readable | 布尔值 | 在每个测试的基础上添加测试名称及其结果,并且仅在测试失败时在终端中显示通用测试日志。 默认值: true | 
| --verbose、-v | 布尔值 | 启用详细输出。默认值:false | 
| --verbosity | 整数 | 设置通用测试的详细程度级别 | 
| --cover、-c | 布尔值 | 生成覆盖率数据 | 
| --cover_export_name | 字符串 | 更改代码覆盖率文件的名称 | 
| --label | 字符串 | 设置测试标签 | 
| --basic_html | 布尔值 | 显示基本 HTML | 
| --stylesheet | 字符串 | 要应用于 HTML 输出的 CSS 样式表 | 
| --create_priv_dir | auto_per_run | auto_per_tc | manual_per_tc | 更改通用测试完成的私有(临时)目录创建的行为 | 
| --include | 字符串 | 包含包含文件的其他目录。为与 ct_run 保持一致而添加的选项,通常 rebar3 应该处理包含文件路径 | 
| --name、--sname | 字符串 | 启动具有给定名称的分布式节点 | 
| --setcookie | 字符串 | 设置分布式 Cookie 的值 | 
| --compile_only | 布尔值 | 使用指定的测试配置编译项目,但不运行测试。 | 
在 test 配置文件中运行。
cover
对通用测试或 Eunit 测试套件调用的模块执行覆盖率分析。在 {cover_enabled, true} 选项位于您的 rebar 配置文件中时,或如果单独使用这些命令时使用了覆盖率标志,则将其作为 rebar3 do ct, cover、rebar3 do eunit, cover 或这两者的组合(使用 rebar3 do eunit, ct, cover)调用。
将生成一个 HTML 报告。
| 选项 | 类型 | 描述 | 
|---|---|---|
| -m、--min_coverage | 整数 | 强制执行所需的覆盖率百分比以成功(0..100) | 
| --reset、-r | 无 | 重置所有覆盖率数据 | 
| --verbose、-v | 无 | 在终端中打印覆盖率分析。 | 
可以通过将 {cover_excl_mods, [Modules]} 添加到配置文件中,将特定模块列入代码覆盖率黑名单。可以通过将 {cover_excl_apps, [AppNames]} 添加到配置文件中,将特定应用程序列入黑名单。
deps
列出依赖项,无论它们是源依赖项还是包依赖项,以及它们是否已锁定。那些已锁定但不匹配锁定文件的依赖项后面跟着一个星号 (*)。
do
用于按顺序运行多个任务的高阶提供程序,这些任务由逗号分隔。例如:rebar3 do a, b, c。
dialyzer
构建并保持合适的 PLT(持久查找表)更新,并使用它对当前项目进行成功类型分析。
| 选项 | 类型 | 描述 | 默认值 | 
|---|---|---|---|
| --incremental、-i | 布尔值 | 启用增量分析模式。 | false | 
| --update-plt、-u | 布尔值 | 启用更新 PLT。 | true | 
| --succ-typings、-s | 布尔值 | 启用成功类型分析。 | true | 
有关抑制警告的说明,请阅读 Dialyzer 文档的在源文件中请求或抑制警告 部分。
PLT 文件命名为 <prefix>_<otp_release>_plt;基本 PLT 是一个包含项目 PLT 通常需要的核心应用程序的 PLT。每个 OTP 版本创建一个基本 PLT 并将其存储在 base_plt_location 中。然后使用基本 PLT 来构建项目 PLT。
以下(可选)配置可以添加到 rebar.config 中 dialyzer 选项的 proplist 中
| 选项 | 描述 | 
|---|---|
| warnings | dialyzer 警告列表 | 
| get_warnings | 更改 PLT 文件时显示警告(布尔值) | 
| plt_apps 
 | 确定包含在 PLT 文件中的应用程序的策略, top_level_deps只包含直接依赖项,或all_deps包含所有嵌套依赖项(直接依赖应用程序列在它们的 .app 文件的applications和included_applications中)。 | 
| plt_extra_apps | 要包含在 PLT 文件中的应用程序列表( base_plt_apps中的应用程序已在列表中)。 | 
| plt_location | PLT 文件的位置, local表示存储在配置文件的基本目录中(默认值)或自定义目录中。 | 
| plt_prefix | PLT 文件的前缀,默认为“rebar3”。 | 
| base_plt_apps | 要包含在基本 PLT 文件中的应用程序列表。 | 
| base_plt_location | 基本 PLT 文件的位置, global表示存储在 $HOME/.cache/rebar3 中(默认值)或自定义目录中。 | 
| base_plt_prefix | 基本 PLT 文件的前缀,默认为“rebar3”。 | 
| incremental | 增量分析模式。 | 
edoc
使用 doc 生成文档。
在 docs 配置文件中运行。
escriptize
生成一个包含项目及其依赖项 BEAM 文件的 escript 可执行文件。
| 配置选项 | 类型 | 描述 | 
|---|---|---|
| escript_main_app | 原子 | 要转换为 escript 的应用程序名称。如果只有一个顶级应用程序,则默认为顶级应用程序。当使用伞形存储库(具有多个顶级应用程序)时,*必须*指定此值。 | 
| escript_name | 字符串 | 生成的 escript 的名称,以及引导的默认模块名称( Module:main(_))。默认为escript_main_app的值。 | 
| escript_incl_apps | 原子列表 | 除了主应用程序及其依赖项(来自应用程序文件)之外,还包含在 escript 存档中的应用程序列表。默认为 []。 | 
| escript_emu_args | 字符串 | Escript 模拟器参数(在 escript 声明中的 %%!之后)。字符串必须以%%!开头并以换行符结尾。例如字符串为"%%! +sbtu +A0\n"。默认值为"%%! -escript main MainApp\n"。 | 
| escript_shebang | 字符串 | 要运行的 escript 文件的位置。默认为 "#!/usr/bin/env escript\n"。字符串中必须包含换行符。 | 
| escript_comment | 字符串 | 要放入生成的 escript 中的任意注释。末尾必须包含换行符。默认为 %%\n。 | 
要覆盖 escript 的默认模块名称(预期与 escript_name 相同),请将 -escript main Module 添加到 escript_emu_args 中。
来自 relx 的示例 escript 配置。
{escript_emu_args, "%%! +sbtu +A0 -noinput\n"}.
{escript_incl_apps, [getopt, erlware_commons, bbmustache, providers, relx]}.
eunit
在项目应用程序上运行 EUnit 测试。
| 配置选项 | 类型 | 描述 | 
|---|---|---|
| --application | 逗号分隔的字符串列表 | 要运行的应用程序测试套件。等效于 [{application, App}]。 | 
| -c, --cover | 布尔值 | 生成覆盖率数据。默认为 false。 | 
| --cover_export_name | 字符串 | 要写入的覆盖率数据文件的基名称。 | 
| -p, --profile | 布尔值 | 显示最慢的测试。默认为 false。 | 
| -d, --dir | 逗号分隔的字符串列表 | 从中加载测试的目录。等效于 [{dir, Dir}]。 | 
| -f, --file | 逗号分隔的字符串列表 | 从中加载测试的文件。等效于 [{file, File}]。 | 
| -m, --module | 逗号分隔的字符串列表 | 从中加载测试的模块。等效于 [{module, Module}]。 | 
| -t, --test | 逗号分隔的字符串列表 | 要运行的测试。格式为 Module:Func1+Func2。等效于[{test, Module, Function}]。 | 
| -g, --generator | 逗号分隔的字符串列表 | 从中加载测试的生成器。格式为 Module:Func1+Func2。等效于[{generator, Module, Function}]。 | 
| -v, --verbose | 布尔值 | 详细输出。默认为 false。 | 
| --name | 字符串 | 为节点指定一个长名称。 | 
| --sname | 字符串 | 为节点指定一个短名称。 | 
| --sys_config | 逗号分隔的字符串列表 | 应用程序配置文件列表。 | 
| --setcookie | 字符串 | 如果节点是分布式的,则设置 cookie。 | 
有关更多详细信息,请参阅 EUnit。
在 test 配置文件中运行。
get-deps
🚧
不需要
与 Rebar 2 不同,此命令不需要用于获取依赖项。编译命令将导致获取依赖项,然后在它们不存在时构建它们。如果您有特定用例需要单独获取依赖项(与编译分开),则此命令很有用。
获取项目依赖项。
help
显示任务列表或给定任务或子任务的帮助。
| 选项 | 描述 | 
|---|---|
| <task> | 要打印帮助的任务。 | 
| <namespace> <task> | 在 <namespace> 中要打印帮助的任务。 | 
new
从模板创建新项目。通过不提供任何参数可以查看可用模板列表。
| 选项 | 描述 | 
|---|---|
| --force,-f | 覆盖现有文件。 | 
| help <template> | 显示每个模板的所有变量和参数。 | 
path
打印当前配置文件中构建目录的路径。
| 选项 | 类型 | 描述 | 
|---|---|---|
| --app | 逗号分隔的字符串列表 | 要返回路径的应用程序的逗号分隔列表。 | 
| --base | 无 | 返回当前配置文件的基本路径。 | 
| --bin | 无 | 返回当前配置文件的 bin 路径。 | 
| --ebin | 无 | 返回当前配置文件的应用程序的所有 ebin 路径。 | 
| --lib | 无 | 返回当前配置文件的 lib 路径。 | 
| --priv | 无 | 返回当前配置文件的 priv 路径。 | 
| --separator,-s | 字符串 | 如果有多个返回路径,则用于连接它们的分割符字符。 | 
| --src | 无 | 返回当前配置文件的应用程序的 src 路径。 | 
| --rel | 无 | 返回当前配置文件的 rel 路径。 | 
release
构建项目的版本。调用 rebar3 help release 以获取参数。
relup
通过调用 rebar3 release(不清除 _build 目录)创建两个已构建版本的 relup。调用 rebar3 help relup 以获取参数。
report
生成要包含在错误报告中的上下文数据。
shell
运行一个 shell,其中项目应用程序和依赖项位于路径中。仅供开发使用;在生产环境中使用 版本。
| 选项 | 类型 | 描述 | 
|---|---|---|
| --config | 字符串 | 允许加载 配置文件(如果有)。如果存在,则默认为为 relx 定义的 sys_config 条目。 | 
| --name、--sname | 原子 | 在网络模式下启动节点。等效于 erl 的 -name和-sname选项。 | 
| --setcookie | 字符串 | 为分布式节点设置 cookie。等效于 erl 的 -setcookie选项。 | 
| --script | 字符串 | 要在启动应用程序之前计算的 escript 的路径。 | 
| --apps | 字符串 | 要引导的应用程序名称的逗号分隔列表。如果存在,则默认为 relx 版本中的应用程序。 | 
| --start-clean | 如果指定,则 shell 不会引导任何应用程序;这对于覆盖 rebar.config 中的版本或 shell 元组配置很有用。 | |
| --relname,-r | 原子 | 如果存在多个版本,请指定要选择哪个版本。 | 
| --relvsn,-v | 字符串 | 如果存在多个版本,请指定要使用哪个版本。 | 
| --env-file | 字符串 | 要设置的 os 环境变量的文件路径,在扩展配置文件中的变量之前。 | 
| --user_drv_args | 字符串 | 对于 Erlang 26 之前的版本,此选项可用于将参数传递给用于创建自定义 shell 的 user_drv 启动函数。从 Erlang 26 开始,使用此选项定义的参数将应用于 shell start_interactive 函数。 | 
| --eval | 字符串 | 在启动期间执行的 Erlang 表达式。这些将在最后运行,就在向用户显示 Erlang shell 提示符之前。可以有多个 --eval开关。大致等效于 erl 的-eval选项。 | 
使用此命令引导的 shell 具有一个正在运行的代理,该代理允许动态运行 Rebar3 命令,例如 r3:compile() 或 r3:upgrade(),并自动重新加载新模块。可以通过调用 r3:do(Namespace, Command) 访问特定命名空间。不能将任何参数传递给这些命令。
tar
构建项目构建版本的压缩 tar 存档。调用 rebar3 help tar 以获取参数。
tree
打印项目的依赖项和传递依赖项的树。
| 选项 | 类型 | 描述 | 
|---|---|---|
| -v,--verbose | 无 | 为 git 和 hg 依赖项打印存储库和分支/标签/引用。 | 
lock
获取要添加到 rebar.lock 文件的未构建依赖项。它们可能刚刚下载,但它们的构建脚本都不应运行。尽管使用预/后挂钩和依赖项插件并非总是如此。
unlock
解锁依赖项。指定要解锁的依赖项的逗号分隔列表并重新生成 rebar.lock 文件,或 -a,--all 以解锁所有依赖项并删除 rebar.lock 文件。
当一个或多个依赖项已从 rebar.config 中删除,但仍保留在锁定文件中时,应使用此命令。
| 选项 | 类型 | 描述 | 
|---|---|---|
| <dependency> | 字符串 | 要解锁的依赖项(逗号分隔)。 | 
| -a,--all | 无 | 解锁所有依赖项。 | 
update
更新软件包索引。
upgrade
获取 rebar.config 中当前的依赖项规范,并获取满足它们的最新版本,同时相应地更新锁定文件。
| 选项 | 类型 | 描述 | 
|---|---|---|
| <dependency> | 字符串 | 要升级的依赖项(逗号分隔)。 | 
| -a,--all | 无 | 升级所有依赖项。 | 
version
打印 rebar3 和当前 Erlang 的版本。
xref
运行交叉引用分析。