当前位置: 首页 > 工具软件 > Rebar > 使用案例 >

rebar3使用介绍(三)命令

东方方伟
2023-12-01


本篇主要介绍rebar3的命令

as

它使配置文件名称和任务列表在该配置文件下运行.
举个例子,你可以配置dev模式和relese模式下不同的配置,然后rebar3 as dev release 就可以按照dev模式发布,同样可以用release发布

rebar.config

{profiles, [
    {dev, [
        {plugins, [
            {rebar3_gpb_plugin, "2.3.2"}
        ]},
        {provider_hooks, [
            {pre, [
                {compile, {protobuf, compile}},
                {clean, {protobuf, clean}}
            ]}
        ]}
    ]},
    {test, [
        {erl_opts, [nowarn_export_all]},
        {ct_opts, [{create_priv_dir, auto_per_tc},
                   {config, "test/ct.config"}]},
        {plugins, [
            rebar3_proper
        ]},
        {deps, [
            {proper, {git, "git://github.com/proper-testing/proper", {tag, "v1.3"}}}
        ]},
        {extra_src_dirs, ["test/support"]}
    ]}
]}.

根据profiles字段的值,可以自定义自己的发布模板

compile

rebar3的编译命令会自己确保依赖到位,不像rebar需要自己get-deps,除了deps部分其他和rebar一致,编译erl,app.src

clean

rebar3 clean 默认只会清理主app下的文件,clean也支持as,rebar3 as test clean 将只会清除test模式下的文件
如果想要清除deps的文件,加上 --all即可

OptionTypeDescription
–all/-anone清除所有app,包括依赖项的构建文件
–profile/-pstring等价于rebar3 as clean

ct

ct命令将会执行test/目录下的测试用例
ct命令和erlang的是基本一致的,支持的扩展参数可以看
注意rebar 加参数用的是 – erlang用的-

cover

cover 一般配合ct或者eunit来用,rebar3 do ct, cover, rebar3 do eunit, cover 或者 rebar3 do eunit, ct, cover

cover 是否开启配置在rebar.config中的cover_enabled字段,默认是false

%% Whether to enable coverage reporting where commands support cover. Default
%% is `false'
{cover_enabled, false}.

cover 命令支持以下扩展参数:

OptionDescription
–reset/-r重置所有数据
–verbose / -v在终端中打印覆盖率分析。

通过添加{cover_excl_mods,[Modules]}到配置文件,可以从代码覆盖中将特定模块列入黑名单。通过添加{cover_excl_apps, [AppNames]}到配置文件,可以将特定应用程序列入黑名单。

deps

列出依赖项,无论它们是源依赖项还是程序包依赖项,以及它们是否已锁定。锁定但未与锁定文件匹配的那些后跟星号(*)

do

do 允许你串行执行多个命令,以逗号分隔。例:rebar3 do a, b, c

dialyzer

构建并保持最新的合适PLT,并使用它来对当前项目进行成功的类型分析。

OptionDescription
–update-PLT / -u启用更新PLT。默认值:true
–succ-typings/-s启用成功键入分析。默认值:true

有关抑制告警的说明,请参阅Dialyzer文档中的Requesting or Suppressing Warnings in Source Files部分。

PLT文件被命名_<otp_release>_plt; 基础PLT是PLT,包含项目PLT通常需要的核心应用程序。每个OTP版本创建一个基本PLT并存储在其中base_plt_location。然后使用基础PLT来构建项目PLT。

可以将以下(可选)配置添加到rebar.config中的选项dialyzer中:

OptionDescription
warnings透析器警告列表
get_warnings更改PLT文件时显示警告(布尔值)
plt_apps用于确定哪些包含在PLT文件的应用程序的策略,top_level_deps以仅包括直接依赖或all_deps包括所有嵌套的依赖(直接依赖的应用程序中列出applications和included_applications他们的.app文件。)
plt_extra_apps要包含在PLT文件中的应用程序base_plt_apps列表(将在列表中的应用程序)
plt_locationPLT文件的位置,local存储在配置文件的基本目录(默认)或自定义目录中。
plt_prefixPLT文件的前缀,默认为“rebar3”
base_plt_apps要包含在基本PLT文件中的应用程序列表
base_plt_location基本PLT文件的位置,global存储在$ HOME / .cache / rebar3(默认)或自定义目录中
base_plt_prefix基本PLT文件的前缀,默认为“rebar3”

edoc

生成doc文档,具体看

escriptize

生成包含项目及其依赖项的BEAM文件的escript可执行文件。

Config OptionTypeDescription
escript_main_appatom要转到escript的应用程序的名称。如果只有一个,则默认为顶级应用。使用伞状项目(具有多个顶级应用程序)时,必须指定此值。
escript_namestring生成的escript的名称,以及boot(Module:main(_))的默认模块名称。默认值为escript_main_app
escript_incl_appslist of atoms除主应用程序及其依赖项(来自应用程序文件)之外,要包含在escript存档中的应用程序列表。默认为[]
escript_emu_argsstringEscript模拟器参数(%%!在escript声明之后)。该字符串必须%%!以换行符开头并以换行符结束。一个示例字符串"%%! +sbtu +A0\n"。默认值为 “%%! -escript main MainApp\n”
escript_shebangstring要运行的escript文件的位置。默认为"#!/usr/bin/env escript\n"。行结束标记必须包含在字符串中。
escript_commentstring任意comment放入生成的escript中。必须在末尾包含换行标记。默认为%%\n。

要覆盖escript的默认模块名称(预期与之相同escript_name),请添加-escript main Module到escript_emu_args

示例escript配置来自relx:

{escript_emu_args, "%%! +sbtu +A0 -noinput\n"}.
{escript_incl_apps, [getopt, erlware_commons, bbmustache, providers, relx]}.

eunit

运行项目应用程序的eunit测试。支持参数如下:

OptionTypeDescription
–cover/-cBoolean生成cover数据
–verbose/-vBoolean详细输出
–appComma separated list of strings运行测试的应用程序列表。相当于EUnit的[{application, App}]。
–suiteComma separated list of strings要运行的测试套件列表。相当于EUnit的[{module, Suite}]。
–file / -fComma separated list of strings要运行的文件列表(例如test/my_tests.beam),相当于Eunit的[{file, File}]。

get-deps

rebar3 已结不需要这个命令,compile会调用get-deps

help

查看某个命令的帮助, rebar3 help clean

new

基础用法章节中讲过,这里就不再讲了
rebar3 new
使用 --force/-f 可以强制覆盖已有文件,不过还是推荐删除重新生成

path

打印在当前配置文件中构建目录的路径。支持选项如下:

OptionTypeDescription
-appComma separated list of strings逗号分隔的应用程序列表,用于返回路径。
–basenone返回指定项目当前配置文件的路径
–binnone返回指定项目当前配置文件的路径
–ebinnone返回指定项目当前配置文件的路径
–libnone返回指定项目当前配置文件的路径
–privnone返回指定项目当前配置文件的路径
–separator/-sstring在多个返回路径的情况下,用于连接它们的分隔符。
–srcnone返回指定项目当前配置文件的路径
–relnone返回指定项目当前配置文件的路径

pkgs

列出可用的包。

release

构建项目发布。使用rebar3 help release来查看支持参数列表

relup

从2个版本创建一个relup, 使用 rebar3 help relup 查看支持参数列表

report

生成上下文数据以包含在错误报告中,如果你要给rebar3上报自己的异常,使用reprot可以快速采集环境信息

shell

使用项目应用程序和路径中的deps运行shell。

使用此命令引导的shell具有运行的代理,允许动态运行rebar3命令,例如r3:compile()或r3:upgrade(),并自动重新加载新模块。通过调用可以访问特定的命名空间r3:do(Namespace, Command)。shell不支持传参

OptionTypeDescription
–configstring支持加载配置文件(如果有)。默认是sys_config
–name/–snameatom使用erl -name/-sname 来启动节点
–setcookiestring指定cookie,同erl -setcookie
–scriptstring在应用程序启动之前要执行的escript的路径
–appsstring以逗号分隔的要引导的应用程序名称列表。

如果relx做了配置,则默认为relx版本中的应用程序。

tar

构建由项目构建的发布的压缩tar存档, rebar3 help tar 查看详细内容

tree

打印项目构件树

lock

获取要添加到rebar.lock文件中的未构建的依赖项。它们会被下载,但它们的构建脚本都不应该运行。虽然这不一定适用于pre / post hooks和dep plugins。

unlock

解锁依赖项。如果没有提到依赖项,则该命令将解锁所有依赖项。如果列出任何特定的顶级依赖项(以逗号分隔)作为参数,那么这些依赖项将被解锁。

然后生成新的锁定文件,或者在没有锁定的情况下删除现有的锁定文件。

当从rebar.config中取出一个或多个依赖项时,应使用此命令,但保留在锁定文件中。也就是你要删除依赖项的时候,用来清理rebar.lock文件

update

更新包索引。

upgrade

升级依赖项并相应地更新锁定文件。
rebar3 upgrade []
如果没指定,则所有的都会被更新

version

打印rebar3 和erlang的版本

$ ../rebar3 version
rebar 3.7.0-rc2+build.4175.ref83d01b5 on Erlang/OTP 19 Erts 8.0

xref

执行xref分析

 类似资料: