rebar是一個遵循 Erlang/OTP 原則的 Erlang 項目構建工具,使用它能夠減小構建標準 Erlang/OTP 項目架構配置的工做量,而且能夠很容易的編譯、測試、發佈 Erlang 應用程序。更強大的是,rebar 提供一種依賴管理機制,它可使開發者很方便地經過 Git、Hg 等方式重用常見的第三方 Erlang 模塊或庫。html
你能夠在 https://github.com/rebar/rebar裏下載zip包或者源代碼本身編譯。node
在根目錄下有一個文件bootstrap.bat。執行,你會生成兩個文件rebar.cmd和rebar 這兩個文件,在之後的項目開發中要用到。(bat文件執行,雙擊或者在cmd下執行均可以,最好有administrator權限。)git
或者你能夠把這兩個文件Copy到你係統變量可以訪問到的地方,或者把你生成的路徑添加到你本身的系統變量中去。這樣你就能夠在任何地方使用rebar命令了。github
首先你要建立一個你的工做目錄。而後把剛纔生成的兩個文件Copy到你的工做目錄下面,或者若是你已經添加了系統變量,則不須要。bootstrap
咱們這裏創建一個工做路徑D:\myapp,而後執行下面的命令來建立一個Erlang項目,項目的名稱叫作myapp架構
rebar create-app appid=myappapp
這條命令會建立一個src文件夾,並在下面生成3個文件:框架
同時rebar還內置了OPT相關的其它文檔魔板,你能夠自動生成相應的框架代碼:工具
執行完以後則會在src目錄下生成對應魔板的文件。這裏gen_server對應simplesrv,gen_fsm對應simplefsm,application對應simpleapp,相應的魔板ID分別是srvid,fsmid,appid。測試
你能夠用下面的命令來編譯整個項目:
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文件夾下有個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來查看測試結果。
若是要發佈一個應用,咱們須要在應用目錄下,建立一個名爲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,其實命令都是同樣的,只是在安裝的時候有一點點不同,還有就是可執行程序不同而已。你們有興趣能夠本身試驗一下。