在Windows用Rebar来构建,编译,测试,发布Erlang项目

rebar是一个遵循 Erlang/OTP 原则的 Erlang 项目构建工具,使用它可以减少构建标准 Erlang/OTP 项目架构配置的工作量,并且可以很容易的编译、测试、发布 Erlang 应用程序。更强大的是,rebar 提供一种依赖管理机制,它可以使开发者很方便地通过 Git、Hg 等方式重用常见的第三方 Erlang 模块或库。

安装rebar

你可以在 https://github.com/rebar/rebar里下载zip包或者源代码自己编译。

在根目录下有一个文件bootstrap.bat。执行,你会生成两个文件rebar.cmd和rebar 这两个文件,在以后的项目开发中要用到。(bat文件执行,双击或者在cmd下执行都可以,最好有administrator权限。)

或者你可以把这两个文件Copy到你系统变量能够访问到的地方,或者把你生成的路径添加到你自己的系统变量中去。这样你就可以在任何地方使用rebar命令了。

用Rebar构建项目

首先你要创建一个你的工作目录。然后把刚才生成的两个文件Copy到你的工作目录下面,或者如果你已经添加了系统变量,则不需要。

我们这里建立一个工作路径D:\myapp,然后执行下面的命令来创建一个Erlang项目,项目的名称叫做myapp

rebar create-app appid=myapp

这条命令会创建一个src文件夹,并在下面生成3个文件:

  • myapp.app.src 应用的资源描述文件,影响后面编译生成的 rebarapp.app 里的内容
  • myapp_app.erl 应用的 Application Behaviour 代码文件
  • myapp_sup.erl 应用的 Supervisor Behaviour 代码文件

同时rebar还内置了OPT相关的其它文档魔板,你可以自动生成相应的框架代码:

  • rebar create template=simplesrv srvid=myapp_server
  • rebar create template=simplefsm fsmid=myapp_fsm
  • rebar create template=simpleapp appid=myapp_app

执行完之后则会在src目录下生成对应魔板的文件。这里gen_server对应simplesrv,gen_fsm对应simplefsm,application对应simpleapp,相应的魔板ID分别是srvid,fsmid,appid。

用rebar编译项目

你可以用下面的命令来编译整个项目:

rebar compile

编译完成之后,会生成一个ebin文件夹,里面存放了应用的资源文件myapp.app和对应beam文件。

rebar clean 可以用来清理编译玩的项目

rebar doc 可以用这个命令来生成对应的doc文档,会生成一个doc的文件夹,打开里面的index.html就可以看到所有的模块的API描述,当然你必须要符合Edoc的描述格式。具体可以参照这里:http://www.erlang.org/doc/apps/edoc/chapter.html

用rebar配合eunit测试项目

在rebar文件夹下有个rebar.config文件,可以在这里配置eunit选项来进行测试。首先我们把rebar.config拷贝到我们的项目目录里。然后更改rebar.config文件的内容成下面:

%%-*- mode: erlang -*-

%% Erlang compiler options

{erl_opts, [debug_info,

{i, "test"},

{src_dirs, ["src"]}]}.

{eunit_opts, [verbose, {report, {eunit_surefire, [{dir, "."}]}}]}.

{cover_enabled, true}.

上面的配置会加载test文件下的测试文件,所以我们需要自己建立一个test文件夹。

然后要生成相应的测试用例文件。首先我们建立一个文件myapp_test.hrl的测试用例文件,内容如下

-include_lib("eunit/include/eunit.hrl").

my_test() ->

?assert(1 + 2 =:= 3).

simple_test() ->

ok = application:start(myapp),

?assertNot(undefined =:= whereis(myapp_sup)).

然后在myapp_server.erl文件的末尾加上下面的代码:

-ifdef(TEST).

-include("myapp_test.hrl").

-endif.

如果有必要你需要在每个模块的文件最后都加上上面的代码,然后执行下面的命令来进行eunit测试:

Rebar compile eunit

如果没有什么问题的话,你应该能看到下面的信息,会告诉你eunit测试情况:

======================== EUnit ========================

module ‘rebarapp_server‘

rebarapp_server: my_test...ok

rebarapp_server: simple_test...[0.015 s] ok

[done in 0.047 s]

module ‘myfsm‘

module ‘myapp_sup‘

module ‘myapp_app‘

=======================================================

All 2 tests passed.

Cover analysis: d:/Mongodb/projects/.eunit/index.html

这样你就可以打开.eunit/index.html来查看测试结果。

用rebar来发布应用

如果要发布一个应用,我们需要在应用目录下,创建一个名为rel的文件夹,用来作为发布用的文件夹。然后我们进入到新建的rel文件夹下面,用下面的命令来创建一个名为myapp的独立的Erlang VM节点:

rebar create-node nodeid=myapp

修改rel/reltools.config里的lib_dirs的值,默认这里是一个空的列表,改成应用所在的目录结构"[../../]"。

然后应用的根目录下面,在rebar.config里加上一行,把新建的rel文件夹放入到rebar可以访问的子文件夹里,作为应用内容的发布文件夹:

{sub_dirs, ["rel"]}

然后需要编译一下项目:

rebar compile

如果没有什么错误,那么就可以进行发布了:

rebar generate

如果在终端上没有发现任何错误的话,那么就证明发布成功了。我们就可以来执行和测试我们的发布内容了。我们会发现在发布文件夹下,生成了一堆文件,在rel\myapp\bin 下面生成了一系列的bat文件,用来控制和操作应用的状况,用法如下:

myapp [install|uninstall|start|stop|restart|console|ping|query|attach|upgrade]

myapp install:会安装一个service到本地服务里,这样你电脑启动的时候这个节点就已经能够执行了。

myapp uninstall:卸载这个服务

myapp start:启动服务 stop:停止服务 restart:重启服务

myapp console:用来启动一个Erlang Shell来执行这个节点

后面几个还没用,等用过了,我再来补充这里的内容。

其它平台使用rebar

其它平台使用rebar,其实命令都是一样的,只是在安装的时候有一点点不一样,还有就是可执行程序不一样而已。大家有兴趣可以自己试验一下。

时间: 2024-12-28 16:35:01

在Windows用Rebar来构建,编译,测试,发布Erlang项目的相关文章

Jenkins(七)---jenkins项目编译测试发布由maven构建的web项目

/** * lihaibo * 文章内容都是根据自己工作情况实践得出. *未经作者同意,禁止转载 */ 一.使用maven编译 (maven编译  与 测试 test 和打包 package 和 部署 install 类似,不再赘述 ) 在项目的配置页面中有个maven配置:里面只有一个clean   就是清除以前的构建信息: 之前我使用了clean   package来编译打包:结果如下图: ---------------------------------------------------

Ant自动编译打包&发布 android项目

Eclipse用起来虽然方便,但是编译打包android项目还是比较慢,尤其将应用打包发布到各个渠道时,用Eclipse手动打包各种渠道包就有点不切实际了,这时候我们用到Ant帮我们自动编译打包了. 1  Ant自动编译打包android项目 1.1   Ant安装 ant的安装比较简单,下载ant压缩包  http://ant.apache.org  (最新的为1.9.3版本),下载之后将其解压到某个目录(本人解压到E:\Program Files\apache-ant-1.9.3) ,然后配

Andorid进阶7—— Ant自动编译打包&发布 android项目

http://www.cnblogs.com/tt_mc/p/3891546.html Eclipse用起来虽然方便,但是编译打包android项目还是比较慢,尤其将应用打包发布到各个渠道时,用Eclipse手动打包各种渠道包就有点不切实际了,这时候我们用到Ant帮我们自动编译打包了. 1  Ant自动编译打包android项目 1.1   Ant安装 ant的安装比较简单,下载ant压缩包  http://ant.apache.org  (最新的为1.9.3版本),下载之后将其解压到某个目录(

C#开发之问题汇总-项目移动路径后编译或者发布错误

问题:项目移动路径后编译或者发布错误 项目移动路径后,编译的时候报dll找不到路劲,但是看了下dll都在bin/Debug文件夹里,跟以前的位置不一样,修改路劲后,问题解决

用 rebar 来构建、编译、测试、发布 Erlang 应用程序

转自:http://dhq.me/build-compile-eunit-release-erlang-application-with-rebar rebar 是一个遵循 Erlang/OTP 原则的 Erlang 项目构建工具,使用它可以减少构建标准 Erlang/OTP 项目架构配置的工作量,并且可以很容易的编译.测试.发布 Erlang 应用程序.更强大的是,rebar 提供一种依赖管理机制,它可以使开发者很方便地通过 Git.Hg 等方式重用常见的第三方 Erlang 模块或库. 安装

在windows 下使用eclipse进行编译和烧写

eclipse IDE是一款开源的前端编程软件,它提供了编写,编译和调试ESP-IDF项目的图形集成开发环境. 首先在https://www.obeo.fr/en/eclipse-download?INSTALLER-WIN64中选择需要的对应位数的eclipse. 然后在http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html下载eclipse运行所需的java环境. 在安装是选择 点

在Windows下使用MinGW静态编译Assimp

使用MinGW静态编译Assimp 到了5月份了,没有写一篇日志,于是自己从知识库里面拿出一篇文章充数吧.这次将要讲解如何在Windows下使用MinGW静态编译Assimp. Assimp是目前比较全的3D格式解析库了,熟悉3D游戏开发的同行都知道,3D的格式非常混乱,各种3D格式在不同场合都有他们特定的应用,游戏引擎只能够解析少部分3D格式,更多实用的格式来自游戏公司自定义的格式.而在开源领域,Assimp算是比较全的3D格式导入库了.它对3D格式理解深入,很适合整合至3D图形引擎中,让你们

Jenkins 构建编译 .net 项目环境

Jenkins 编译.net 项目 一.下载 windows jenkins 直接安装还是很方便的: https://mirrors.tuna.tsinghua.edu.cn/jenkins/windows/jenkins-2.70.zip 二.安装.net4.0 (NDP451) 如果是之前安装IIS 验证页面时则重新注册下.net4.0 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet-regiis.exe -r 开启 ASP.NE

Windows 内核(WRK)编译

引子 WRK 是微软于 2006 年针对教育和学术界开放的 Windows 内核的部分源码, WRK(Windows Research Kernel)也就是 Windows 研究内核, 在 WRK 中不仅仅只提供了 Windows 内核模块的部分代码,其还提供了编译工具, 也就是通过这个编译工具,你可以将你的 WRK 编译成一个 EXE 文件, 也就是内核可执行模块,然后你可以利用这个 EXE 文件来取代操作系统本身的内核, 这样的话,下次开机的时候操作系统所加载的内核就是您编译的那个 EXE