深入了解 rebar3

一、rebar3配置

Rebar3是一個基於Erlang/OTP環境的構建工具。當使用Rebar創建OTP應用程序或erlang庫時,創建指令會自動填寫默認的相關構建元數據。配置文件(位於根目錄下的rebar.config)可以被用來指定如測試框架支持、插件、依賴項等與構建相關的元數據。它的示例如下:


{erl_opts, [debug_info]}.
{deps, [
    {cowboy, {pkg, cowboy_git, "master"}}
]}.
{plugins, [
    lager,
    rebar3_hex
]}.
{provider_hooks, [
    {post, [
        {compile, {lager, compile}},
        {clean, {lager, clean}}
    ]}
]}.

上面的配置文件展示了如何定義一些基本的配置項,比如:

1、代碼編譯時打開 Erlang 源碼調試信息;

2、依賴於 cowboy 庫;

3、使用的Rebar插件,正常情況下,Rebar會將項目根目錄下的rebar.config作為默認的配置文件。

二、rebar3本地源

在項目開發時,不同的電腦上都有各種各樣的網絡配置,對於自動化開發,我們經常需要下載各種依賴和源碼。但如果開發過程中網絡環境比較差,依賴的下載和編譯會非常耗時,甚至會失敗。此時我們需要使用本地源,這可以保證依賴的下載和編譯時一定會成功。使用本地源的好處如下:

1、本地源會保留所有已經下載的依賴,無需重複下載;

2、本地源會在磁盤上保留編譯後的文件,無需重新編譯。

下面是如何使用本地源進行編譯:


% 創建一個本地源
rebar3 local create
% 編譯依賴
rebar3 compile

這樣就可以在代碼中使用依賴了。同時,還可以看到所有已經編譯好的文件都會被保存在本地源中。

三、rebar3是什麼

Rebar3是一個基於Erlang/OTP環境的構建工具。它可以用來編寫 OTP 應用程序或 erlang 庫。另外,Rebar3的一個優勢是其強大的插件系統,允許開發者創建插件並在構建過程中使用它們。此外,Rebar3具有自動化、簡單且可定製化的構建過程、快速的依賴管理以及支持umbrella工程等特性,這些特性使得開發者更容易完成基於Erlang開發的任務。

四、rebar3是什麼軟件

從本質上講,Rebar3是一個開發者用於構建OTP應用程序或Erlang庫的構建工具。作為一個基於Erlang編寫的項目構建工具,Rebar3旨在幫助開發者快速開發OTP應用程序或Erlang庫。

嚴格來講,Rebar3被視為一個Erlang包,因此開發者需要安裝Erlang才能使用它。一旦開始安裝Rebar3,開發者就可以使用它來創建一個新的OTP應用程序或Erlang庫。

五、rebar3 mnesia 修改目錄

Rebar3提供一個額外的選項, 即 mnesia 的修改目錄,該目錄可以包含一些與構建無關的信息,比如 Mnesia 的變更歷史和日誌。通常,Mnesia 修改目錄會包含 Mnesia 的配置文件,以及一些 transfile 文件。例如,我們可以將 Mnesia 修改目錄指向“/mnesia”:


% 執行如下命令來設置 mnesia_dir
%% rebar.config
{mnesia_dir, "/mnesia"}.

當Mnesia開始記錄修改歷史和日誌時,相關的文件也將存放在指定的目錄中。

六、rebar3 umbrella plugin

Rebar3的一個很棒的特性是支持umbrella工程。Umbrella 工程允許組織代碼庫中不同部分之間的依賴,這些依賴通常是不同但相互合作的 Erlang 應用程序/庫。

在創建Umbrella工程時,我們可以選擇在每個具體的應用程序中添加不同的插件。這些插件可以在不同應用程序之間進行共享,比如lager和rebar3_undo插件:


{plugins, [
    {lager, "3.9.0"},
    {rebar3_undo, "0.2.13"}
]}.

Rebar3支持很多其他的插件和動態打包機制,比如 cowboy、mochiweb、inets 和 xmerl。簡而言之,Rebar3插件可以幫助開發者進行更加快速的開發和測試,同時可以增強應用程序的功能和可用性。

原創文章,作者:BXZIW,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/361694.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
BXZIW的頭像BXZIW
上一篇 2025-02-25 18:17
下一篇 2025-02-25 18:17

相關推薦

  • 深入解析Vue3 defineExpose

    Vue 3在開發過程中引入了新的API `defineExpose`。在以前的版本中,我們經常使用 `$attrs` 和` $listeners` 實現父組件與子組件之間的通信,但…

    編程 2025-04-25
  • 深入理解byte轉int

    一、字節與比特 在討論byte轉int之前,我們需要了解字節和比特的概念。字節是計算機存儲單位的一種,通常表示8個比特(bit),即1字節=8比特。比特是計算機中最小的數據單位,是…

    編程 2025-04-25
  • 深入理解Flutter StreamBuilder

    一、什麼是Flutter StreamBuilder? Flutter StreamBuilder是Flutter框架中的一個內置小部件,它可以監測數據流(Stream)中數據的變…

    編程 2025-04-25
  • 深入探討OpenCV版本

    OpenCV是一個用於計算機視覺應用程序的開源庫。它是由英特爾公司創建的,現已由Willow Garage管理。OpenCV旨在提供一個易於使用的計算機視覺和機器學習基礎架構,以實…

    編程 2025-04-25
  • 深入了解scala-maven-plugin

    一、簡介 Scala-maven-plugin 是一個創造和管理 Scala 項目的maven插件,它可以自動生成基本項目結構、依賴配置、Scala文件等。使用它可以使我們專註於代…

    編程 2025-04-25
  • 深入了解LaTeX的腳註(latexfootnote)

    一、基本介紹 LaTeX作為一種排版軟件,具有各種各樣的功能,其中腳註(footnote)是一個十分重要的功能之一。在LaTeX中,腳註是用命令latexfootnote來實現的。…

    編程 2025-04-25
  • 深入探討馮諾依曼原理

    一、原理概述 馮諾依曼原理,又稱“存儲程序控制原理”,是指計算機的程序和數據都存儲在同一個存儲器中,並且通過一個統一的總線來傳輸數據。這個原理的提出,是計算機科學發展中的重大進展,…

    編程 2025-04-25
  • 深入剖析MapStruct未生成實現類問題

    一、MapStruct簡介 MapStruct是一個Java bean映射器,它通過註解和代碼生成來在Java bean之間轉換成本類代碼,實現類型安全,簡單而不失靈活。 作為一個…

    編程 2025-04-25
  • 深入了解Python包

    一、包的概念 Python中一個程序就是一個模塊,而一個模塊可以引入另一個模塊,這樣就形成了包。包就是有多個模塊組成的一個大模塊,也可以看做是一個文件夾。包可以有效地組織代碼和數據…

    編程 2025-04-25
  • 深入理解Python字符串r

    一、r字符串的基本概念 r字符串(raw字符串)是指在Python中,以字母r為前綴的字符串。r字符串中的反斜杠(\)不會被轉義,而是被當作普通字符處理,這使得r字符串可以非常方便…

    編程 2025-04-25

發表回復

登錄後才能評論