文档章节

rebar3文档翻译—基本用法

易冥天
 易冥天
发布于 2017/02/16 13:09
字数 915
阅读 368
收藏 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. 有关更多细节,请查阅发行版部分

© 著作权归作者所有

共有 人打赏支持
易冥天
粉丝 31
博文 138
码字总数 70277
作品 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
为了方便发布tar,rebar3要适应relx迁移include目录到src目录

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

格通
2016/09/30
32
0
【读书笔记】"Erlang In Anger" Erlang应用的错误调试

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

ljzn
2016/09/26
29
1
rebar3发布,归属权更新到erlang团队了

rebar3的beta 4发布很久了,一直奇怪为啥没有发布3.0稳定版。今天一看,不但发布了3.0 stable版本,而且github的地址也改了,由github.com/rebar/rebar3 改为 github.com/erlang/rebar3 了,...

格通
2016/03/15
52
0

没有更多内容

加载失败,请刷新页面

加载更多

启动线程以及安全终止线程

启动 使用start()方法可以启动线程。 start()方法的含义是告知线程规划器线程已初始化完毕,可以分给这个线程时间片了(执行run()方法)。 安全终止线程 示例代码 import java.util.concurr...

karma123
7分钟前
1
0
Python+OpenCV 图像风格迁移(模仿名画)

现在很多人都喜欢拍照(自拍)。有限的滤镜和装饰玩多了也会腻,所以就有 APP 提供了模仿名画风格的功能,比如 prisma、versa 等,可以把你的照片变成 梵高、毕加索、蒙克 等大师的风格。 这...

crossin
12分钟前
1
0
karabiner json语法

karabiner json语法 to_if_alone 如果同时制定了to, 那么to对应的key必须是非可见字符,例如control,shift或者command, 为什么呢? If to events are specified, to events are released befo...

黄威
13分钟前
1
0
学习设计模式——工厂方法模式

1. 认识工厂方法模式 1. 功能:定义一个用于创建对象的接口,让子类决定实例化哪一个类,该模式使一个类的实例化延迟到其子类中。 2. 组织结构: Product: 定义工厂方法中用来创建对象的接口...

江左煤郎
13分钟前
1
0
常用的大数据技术有哪些?

大数据技术为决策提供依据,在政府、企业、科研项目等决策中扮演着重要的角色,在社会治理和企业管理中起到了不容忽视的作用,很多国 家,如中国、美国以及欧盟等都已将大数据列入国家发展战...

董黎明
15分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部