Rebar3的基本使用流程
创建项目
rebar3 new [lib|app|release|plugin] myapp
添加依赖
rebar.config
添加{deps, [cowboy]}
rebar.config
可添加CDN的源让rebar3从该源上下载依赖{rebar_packages_cdn,"https://hexpm.upyun.com"}.
- 修改
.app.src
,applications
属性里添加依赖:
{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的基本使用流程/