rebar3使用介绍(五)自定义依赖获取方式

本文介绍如何在rebar3中自定义依赖资源获取方式,通过实现rebar_resource行为,可将资源从内网服务器下载,适用于企业外网访问受限场景。示例展示了rebar_github_resource的实现及配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

rebar3使用介绍(四)自定义依赖获取方式

每个依赖获取方式都是 rebar_resorece behavior描述

-module(rebar_resource).

-export_type([resource/0
             ,type/0
             ,location/0
             ,ref/0]).

-type resource() :: {type(), location(), ref()}.
-type type() :: atom().
-type location() :: string().
-type ref() :: any().

-callback lock(file:filename_all(), tuple()) ->
    rebar_resource:resource().
-callback download(file:filename_all(), tuple(), rebar_state:t()) ->
    {tarball, file:filename_all()} | {ok, any()} | {error, any()}.
-callback needs_update(file:filename_all(), tuple()) ->
    boolean().
-callback make_vsn(file:filename_all()) ->
    {plain, string()} | {error, string()}.

rebar3 自带的获取方式有rebar_git_resource, rebar_hg_resourcerebar_pkg_resource

可以向插件一样,自定义资源获取,在Kelly McLaughlin的rebar3_tidy_deps资源中可以看到这方面的一个例子:

-module(rebar_tidy_deps).

-export([init/1]).

-spec init(rebar_state:t()) -> {ok, rebar_state:t()}.
init(State) ->
    {ok, rebar_state:add_resource(State, {github, rebar_github_resource})}.

rebar_github_resource实现rebar3资源行为的此资源将添加到可用资源列表中rebar_state。将repo添加为插件以rebar.config允许使用此资源:

{mydep, {github, "kellymclauglin/mydep.git", {tag, "1.0.1"}}}.

{plugins, [
    {rebar_tidy_deps, ".*", {git, "https://github.com/kellymclaughlin/rebar3-tidy-deps-plugin.git", {tag, "0.0.2"}}}
]}.

这一篇在开发过程中其实及其实用,因为有些公司开发可能做了外网访问限制,你可以将资源上传到自己的内网服务器上,然后所有的资源都变成从你的服务器下载而不是github或者其他(当然你也可以直接把get-deps好的目录和rebar.lock直接归档),甚至你可以重写pkg和git的获取方式,即使子依赖项,他们也会从你的服务器获取文件而且不用破坏文件本身

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值