Compiling and building a project with rebar
来源:互联网 发布:java随机数生成一样 编辑:程序博客网 时间:2024/05/21 20:25
转载:http://wiki.erlang-web.org/Rebar
Getting Erlang Web
Before you start, you have to prepare the project directory, and get Erlang Web framework as a dependency.
1. Add a dependency to Erlang Web in rebar.config file in your project directory.
{lib_dirs,["deps"]}.{deps, [{'erlang-web', ".*", {git, "git://github.com/esl/erlang-web.git", "rebar"}} ]}.
2. Get project dependencies
./rebar get-deps
Compiling
Before you will be ready to use the framework for the first time, you should compile it.
To do so be sure to have all dependencies, erlang (base or hype) erlang-inets, yaws and the erlang tools, on most packaged distributions they are usually a set of different packages. Most of compiling errors are because of missing erlang packages.
1. Add all additional applications to the section sub_dirs in rebar.config file
{sub_dirs,[ "apps/myapp"]}.
2. Compile the project
./rebar compile
You should run that command every time you change something in your project.
Building
1. Copy the reltool.config.sample script from erlang-web directory in deps to the main directory as reltool.config
In reltool.config.sample it is assumed that you store all your dependencies in deps directory, if it's name is different you will have to change appropriet paths
Erlang Web framework supports now the two main servers implemented in Erlang: INETS and Yaws. By default it uses inets. To change that switch inets to yaws in reltool.config.
2. Add project specific applications to the rel tuple in reltool.config file
{sys, [ {lib_dirs, ["apps", "deps", "deps/erlang-web/apps" ]}, {rel, "trace-this", "1.0", [ %% Required applications ... %% Project specific applications myapp ]},
And an app tuple
{app, myapp, [{incl_cond, include}]}
3. Add copy directive to move project specific configuration files (like dispatch.conf) and templates
{copy, "apps/myapp/priv/config"}, {copy, "apps/myapp/priv/docroot"}, {copy, "apps/myapp/priv/templates"}
4. Run the following command every time you want to upgrade your project
./rebar generate force=1
It will build the project in rel directory. Option force=1 makes rebar ignore the fact that the @rel@ directory exists, and lets you upgrade your project.
Results
Rebar prepares the structure of rel directory, that is your project built direcotory:
- creates the mandatory directories for the Erlang Web framework, including:
- bin
- config
- docroot
- lib
- log
- pipes
- releases
- templates
- copies the binary executables:
- heart
- run_erl
- to_erl
- erts directory
- copy start scripts for both: interactive and embedded mode
creates start_erl.data configuration file
- prepare sample framework configuration files (or copy project specific ones):
- dispatch.conf
- errors.conf
- project.conf
- builds simple welcome, 404 and 501 error pages
- copies the required autocomplete wpart files
- creates .rel and sys.config files
- generates boot file
Creating skeleton for a new application in the project
1. Copy '''templates''' directory from Erlang Web to maint project directory
cp -r deps/erlang-web/templates ./
2. Run
./rebar create template=add [app_name=newapp] [app_vsn=0.1]
It puts a template structure for the new application in apps directory
Warning: Rebar looks for template add through all of project dependencies, and returns an error, bacause it doesn't find it. To solve it comment deps and sub_dirs sections in rebar.config
Running the project
To start the server run in rel directory:
bin/start
or
bin/start_interactive
- Compiling and building a project with rebar
- MinGW - Compiling and Building with MinGW
- Compiling and Running a Java Program with a Native Method
- Building Your Project with Gradle
- Building Your Project with Gradle
- Building a JSON web service with Java and Axis2
- Building a JSON web service with Java and Axis2
- Building a Recipe Search Site with Angular and Elasticsearch
- GCC and Make Compiling, Linking and Building C/C++ Applications
- jenkins-Building a software project
- Compiling a MEX file with Visual Studio
- Making a small Lisp project with quickproject and Quicklisp
- Building and Testing with Gradle
- Building a Basic Flash MX Page with ASP.NET and SQL Server
- Python Programming with the Java(TM) Class Libraries: A Tutorial for Building Web and Enterprise App
- Building a Distributed Object System with .NET and J2EE Using IIOP.NET
- (转载)Building a Website with PHP, MySQL and jQuery Mobile, Part 1
- Building a battery powered WiFi IoT Sensor with ESP8266, MS-5611 (GY-63), nodemcu and MQTT
- 【查找结构】平衡二叉查找树
- LPC12xx 引用库函数失败问题
- [Django]Windows下Django配置Apache示范设置
- erlang使用rebar generate生成发行包时,去除subversion的目录
- 防止sql注入攻击
- Compiling and building a project with rebar
- VP8简介
- 【查找结构】多路查找树/B-树/B+树
- JSP & Servlet学习笔记(第2版)
- MFC使用经验
- Kde Partition Manager和GParted的简单对比
- Java切割文件
- Android SDK +Eclipse+ADT+CDT+NDK 开发环境在windows 7下的搭建
- poj 2462 / hdu 1154 Cutting a polygon 线段在多边形内长度