Rebar3的基本使用流程

创建项目

rebar3 new [lib|app|release|plugin] myapp

添加依赖

  1. rebar.config添加{deps, [cowboy]}
  2. rebar.config可添加CDN的源让rebar3从该源上下载依赖{rebar_packages_cdn,"https://hexpm.upyun.com"}.
  3. 修改.app.srcapplications属性里添加依赖:
{application, web_test,
 [{description, "A Web App"},
  {vsn, "0.1.0"},
  {registered, []},
  {mod, {yweb_app, []}},
  {applications,
   [kernel,
    stdlib,
    **cowboy**
   ]},
  {env,[]},
  {modules, []}
 ]}.

编译

rebar3直接compile就会自动获取依赖。

rebar3 compile
===> Fetching cowboy v2.9.0
===> Fetching cowlib v2.11.0
===> Analyzing applications...
===> Compiling cowlib
===> Compiling ranch
===> Compiling cowboy
===> Analyzing applications...
===> Compiling test_app

在shell中运行项目

在编译目录直接运行rebar3 shell这个命令会包含项目的ebin以及所有依赖的ebin。

发布项目

rebar3 release -o /data/release/default
===> Release successfully assembled: /data/release/default/test_app

发布能够把项目内所有的文件复制到对应的目录并且命名为项目名,并且会多生成三个文件夹:bin、release、lib。
bin目录主要是一些rebar3的管理脚本

ls -al /data/release/default/test_app/bin
total 104
drwxr-xr-x.  2 root root   105 May 25 22:56 .
drwxr-xr-x. 10 root root   125 May 25 22:56 ..
-rw-r--r--.  1 root root 14214 May 25 22:56 install_upgrade.escript # 一个escript执行时机未知
-rwxr-xr-x.  1 root root 33941 May 25 22:56 test_app # rebar3管理命令实际执行的脚本
-rwxr-xr-x.  1 root root 33941 May 25 22:56 test_app-0.1.0 # 与上面都一样,但多一个版本号
-rw-r--r--.  1 root root  7508 May 25 22:56 nodetool # 一个escript,执行时机未知
-rw-r--r--.  1 root root  6806 May 25 22:56 no_dot_erlang.boot

release主要管理项目内信息集合,是由relx项目生成(后面补上)

ls -al /data/release/default/test_app/releases/0.1.0/
total 120
drwxr-xr-x. 2 root root   149 May 25 22:56 .
drwxr-xr-x. 3 root root    41 May 25 22:56 ..
-rw-r--r--. 1 root root  1473 May 25 22:56 test_app.rel # 包含项目内所有app的信息
-rw-r--r--. 1 root root  6806 May 25 22:56 no_dot_erlang.boot
-rw-r--r--. 1 root root 34049 May 25 22:56 start.boot
-rw-r--r--. 1 root root 28770 May 25 22:56 start_clean.boot
-rw-r--r--. 1 root root 39328 May 25 22:56 start.script # 更完整的app.src集合,包含了所有的模块信息
lrwxrwxrwx. 1 root root    43 May 25 22:56 sys.config.src -> 编译目录/args/sys.config.src
lrwxrwxrwx. 1 root root    40 May 25 22:56 vm.args.src -> 编译目录/args/vm.args.src

lib是所有app加上版本号的目录

ls -al /data/game/release/default/my/lib/
total 4
drwxr-xr-x.  2 root root 4096 May 25 22:56 .
drwxr-xr-x. 10 root root  125 May 25 22:56 ..
lrwxrwxrwx.  1 root root   49 May 25 22:56 cowboy-2.9.0 -> 编译目录/_build/default/lib/cowboy
lrwxrwxrwx.  1 root root   49 May 25 22:56 cowlib-2.11.0 -> 编译目录/_build/default/lib/cowlib

默认是用软连接指向编译目录_build下的对应profile的文件。


Rebar3的基本使用流程
https://qiil.github.io/2021/05/26/Rebar3的基本使用流程/
作者
QSY
发布于
2021年5月26日
许可协议