文档章节

rebar3文档翻译—基本用法

影狼
 影狼
发布于 2017/02/16 13:09
字数 915
阅读 355
收藏 0
  1. 新应用或发行版
    1. rebar3提供了创建应用、库应用(没有start/2)、发行版和插件的模板。使用new命令利用一个模板创建一个项目。 new默认接受lib,app,release和plugin作为第一个参数,项目名称作为第二个参数。
    2. shell
      1. rebar3 new app myapp
      2. ===> Writing myapp/src/myapp_app.erl
        ===> Writing myapp/src/myapp_sup.erl
        ===> Writing myapp/src/myapp.app.src
        ===> Writing myapp/rebar.config
        ===> Writing myapp/.gitignore
        ===> Writing myapp/LICENSE
        ===> Writing myapp/README.md
    3. 有关更多的关于new命令的信息和参数请查看有关命令的文档,并了解如何创建和使用自定义模板。
  2. 添加依赖关系
    1. 依赖被列在rebar.config文件的deps键下
    2. {deps, [
              {cowboy, "1.0.1"}, % package
        {cowboy, {git, "git://github.com/ninenines/cowboy.git", {tag, "1.0.1"}}} % alternatively, source
              ]
      }.
    3. 现在,您可以在应用程序下将dep添加到您项目的应用程序的.app.src文件中,以便Erlang知道你的项目运行需要哪些依赖关系
    4. {application, <APPNAME>,
       [{description, ""},
        {vsn, "<APPVSN>"},
        {registered, []},
        {modules, []},
        {applications, [
                       kernel
                       ,stdlib
                       ,cowboy
                       ]},
        {mod, {<APPNAME>_app, []}},
        {env, []}
       ]}.
    5. 有关依赖性处理的更多信息, 请参阅依赖性文档
  3. 编译
    1. 只有一个命令,compile,需要获取依赖并且编译所有的应用程序
    2. shell
      1. rebar3 compile
      2. ==> Verifying dependencies...
        ==> Fetching cowboy
        ==> Fetching ranch
        ==> Fetching cowlib
        ==> Compiling cowlib
        ==> Compiling ranch
        ==> Compiling cowboy
        ==> Compiling myapp
    3. 依赖关系始终会被获取
      1. rebar3不同于以前的版本,当运行一个命令如compile,如果找不到依赖项,则会获取和编译依赖项。这是通过提供程序依赖关系实现的,你可以在插件教程中了解相关资料。
  4. 输出格式
    1. 用于安装依赖项、构建版本和其他任何的写入磁盘的输出位于根目录下的_build目录中。
    2. shell
      1. _build/
        1. default
          1. lib
            1. cowboy
            2. cowlib
            3. ranch
    3. 有关配置文件和_build目录的更多信息,请参阅配置文件文档页面
  5. 测试
    1. 默认情况下,测试将在test目录下找到,除了eunit被发现在个别模块
    2. 运行测试所需的配置文件可以放在test配置文件中
    3. {profiles, [
                 {test, [{deps, [
                                {meck,
                              {git, "git://github.com/eproxus/meck.git", {tag, "0.8.2"}}}
                                ]}
                        ]}
                 ]
      }.
    4. 第一次使用rebar3 ct运行meck将会安装到_build/test/lib目录中,但不会添加到rebar.lock文件中
    5. shell
      1. _build
        1. test
          1. lib
            1. meck
  6. 发布目标系统
    1. 发布使用relx构建
    2. 创建一个具有发布结构和rebar.config文件中默认relx配置文件的新项目运行
      1. shell
        1. rebar3 new release myrel
        2. ===> Writing myrel/apps/myrel/src/myrel_app.erl
          ===> Writing myrel/apps/myrel/src/myrel_sup.erl
          ===> Writing myrel/apps/myrel/src/myrel.app.src
          ===> Writing myrel/rebar.config
          ===> Writing myrel/config/sys.config
          ===> Writing myrel/config/vm.args
          ===> Writing myrel/.gitignore
          ===> Writing myrel/LICENSE
          ===> Writing myrel/README.md
    3. 查看rebar.config,我们发现一些我们的应用程序示例中不存在的元素
      1. {relx, [{release, {myrel, "0.0.1"},
                 [myrel]},
                {dev_mode, true},
                {include_erts, false},
                {extended_start_script, true}
               ]
        }.
        {profiles, [
                   {prod, [{relx, [{dev_mode, false},
                                   {include_erts, true}]}]}
                   ]
        }.
    4. 这个配置提供了一些好的默认值,用于使用relx为构建一个 开发(默认配置文件) 版本和 生产(prod配置文件) 版本。当构建一个生产版本时,我们很可能想创建一个目标系统(包括erts),绝不希望发布包含到应用程序的符号链接(dev_mode false)。
      1. shell
        1. rebar3 release
        2. ===> Verifying default dependencies...
          ===> Compiling myrel
          ===> Starting relx build process ...
          ===> Resolving OTP Applications from directories:         
                    _build/default/lib
                    /usr/lib/erlang/lib
          ===> Resolved myrel-0.1.0
          ===> Dev mode enabled, release will be symlinked
          ===> release successfully created!
    5. 使用默认的rebar.config,创建版本的压缩归档作为目标系统,就像将配置文件设置成prod并运行tar一样简单
      1. shell
        1. rebar3 as prod tar
        2. ===> Verifying default dependencies...
          ===> Compiling myrel
          ===> Starting relx build process ...
          ===> Resolving OTP Applications from directories:
                    .../myrel/apps
                    /usr/lib/erlang/lib
          ===> Resolved myrel-0.1.0
          ===> Including Erts from /usr/lib/erlang
          ===> release successfully created!
          ===> tarball myrel/_build/rel/myrel/myrel-0.1.0.tar.gz successfully created!
  7. 有关更多细节,请查阅发行版部分

© 著作权归作者所有

共有 人打赏支持
影狼
粉丝 30
博文 134
码字总数 66657
作品 0
海淀
程序员
rebar3的一些参考文档

刚使用rebar3,功能太多,各种命令不会用。网上找了一些资料: rebar3的官网,有指定的文档,命令例子都有,入门必备: rebar官网 然后使用流程介绍,这里介绍了一些使用案例和为什么这样做的...

格通
2016/03/25
50
0
收藏的博客 -- erlang学习

一、技术博客 http://blog.csdn.net/erlib 为什么我要选择erlang+go进行服务器架构(1) 为什么我要选择erlang+go进行服务器架构(2) http://www.qingliangcn.org/ https://github.com/qinglian...

libaineu2004
2017/09/14
0
0
【读书笔记】"Erlang In Anger" Erlang应用的错误调试

全书 封面不明觉厉 这本书很薄,只有93页,而且是免费的,有兴趣的朋友可以去看一看。虽然书中没有提到Elixir,但对于学习Elixir也很有帮助。这本书适合对Erlang和OTP有初步了解的人阅读。书...

ljzn
2016/09/26
29
1
kafka系列文章索引(结束)

apache kafka在数据处理中特别是日志和消息的处理上会有很多出色的表现,这里写个索引,关于kafka的文章暂时就更新到这里,最近利用空闲时间在对 kafka做一些功能性增强,并java化,虽然现在...

老先生二号
2017/05/28
0
0
为了方便发布tar,rebar3要适应relx迁移include目录到src目录

使用rebar3打tar包,十分方便。其中rebar3使用relx打包,relx里面有下面的选项,可以在打包的时候,不打包src目录,方便在发布的时候,不发布src里面的源码文件: 参考:relx Configuration ...

格通
2016/09/30
32
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

基于名字自动发布之数据库(4)

基于名字自动发布之数据库(4) 项目地址: https://gitee.com/lookingdreamer/RexDeploy_v1 流程图 几个重要的表 数据库表主要包含以下7个表 表名 说明 pre_auto_configure 配置模板关联表 pr...

运维技术
48分钟前
0
0
记一次Redis内存诡异增长

一、现象 实例名:r-bp1cxxxxxxxxxd04(主从) 时间:2017-11-16 12:26~12:27 问题:一分钟内存上涨了2G,如下图所示: 键值规模:6000万左右 二、Redis内存分析 1.内存组成 上图中的内存统计的...

Mr_zebra
51分钟前
3
0
对java中泛型的理解

1. 所有反射的操作都是在运行时的,一般程序会采取去泛型化的操作。 也就是说Java中的泛型只是在编译阶段有效,在编译过程中,正确检验泛型结果后,会将泛型的相关信息抹掉,并且在对象进入和...

-一抹微笑
53分钟前
0
0
monit监控自定义服务

版本:This is Monit version 5.25.1 服务器上跑的公司自己的服务,查看网上写的monit配置监控,都是一些监控常规应用(Nginx、Apache、mysql等)这些监控起来比较简单,都有pid文件,tomca...

骑猪赛大象
57分钟前
0
0
MicroPython新货上架【TPYBoard新品合集】你想要的好玩意儿全在这!

八月火力全开! TPYBoard一大波新品隆重上市! 一次次的研发、尝试 无数次的改进、优化 新品强势来袭 发烧友们期待已久的 STM32F407系列也已全新上线啦~ _________________________________...

bodasisiter
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部