1.idea搭建rebar3 的cowboy 服务器项目,解决cowboy代码联想跳转问题

这个例子是cowboy helloword例子改造为rebar3的例子。

1.首先需要下载一个idea,免费版即可

2.随便创建一个项目,进入idea后,File->Plugins,搜索安装erlang,安装完毕重启idea

 3.File->Other Settings->Erlang External Tools

4.点击上图Download the latest Rebar 3,放到自己熟悉的目录,下载完毕后找到下载目录,配置环境变量。window需要在相同目录创建一个reabr3.cmd文件,并粘贴上如下内容。(详细可查官网Getting Started | Rebar3)

@echo off
setlocal
set rebarscript=%~f0
escript.exe "%rebarscript:.cmd=%" %*

然后运行rebar3 --version检查是否安装成功,能看到版本号就成功了。

5.创建项目,如下创建一个名为cowboy_study的项目

rebar3 new release cowboy_study

6.导入项目,进入idea内,File->New->Project from Existing Sources,然后选择创建的项目,ok。

选择导入项目类型,next

选择之前下载的rebar,注意,这里windows需要选择rebar3.cmd否者idea可能无法导入rebar3项目。然后一直next直到完成。

7.进入项目后将rebar3.cmd修改为rebar3,具体步骤参考步骤3,只需要选中rebar3而不是rebar3.cmd。

8.添加cowboy依赖,打开rebar3.config,添加cowboy依赖

{cowboy, {git, "https://github.com/emqx/cowboy", {tag, "2.7.1"}}}

完整文件如下所示:

{erl_opts, [debug_info]}.
{deps, [
    {cowboy, {git, "https://github.com/emqx/cowboy", {tag, "2.7.1"}}}
]}.

{relx, [{release, {cowboy_study, "0.1.0"},
         [cowboy_study,
          sasl]},

        {mode, dev},

        %% automatically picked up if the files
        %% exist but can be set manually, which
        %% is required if the names aren't exactly
        %% sys.config and vm.args
        {sys_config, "./config/sys.config"},
        {vm_args, "./config/vm.args"}

        %% the .src form of the configuration files do
        %% not require setting RELX_REPLACE_OS_VARS
        %% {sys_config_src, "./config/sys.config.src"},
        %% {vm_args_src, "./config/vm.args.src"}
]}.

{profiles, [{prod, [{relx,
                     [%% prod is the default mode when prod
                      %% profile is used, so does not have
                      %% to be explicitly included like this
                      {mode, prod}

                      %% use minimal mode to exclude ERTS
                      %% {mode, minimal}
                     ]
            }]}]}.

下载完后cowboy_study.app.src文件添加cowboy

{application, cowboy_study,
 [{description, "An OTP application"},
  {vsn, "0.1.0"},
  {registered, []},
  {mod, {cowboy_study_app, []}},
  {applications,
   [kernel,
    stdlib,
    cowboy %%这里添加cowboy
   ]},
  {env,[]},
  {modules, []},

  {licenses, ["Apache 2.0"]},
  {links, []}
 ]}.

9.修改cowboy_study_app.erl代码,完整如下所示:


-module(cowboy_study_app).

-behaviour(application).

-export([start/2, stop/1]).

start(_StartType, _StartArgs) ->
    Dispatch = cowboy_router:compile([
        {'_',[
            {"/",toppage_h,[]}
        ]}
    ]),
    {ok,_} = cowboy:start_clear(http,[{port,8080}],#{
        env=>#{dispatch=>Dispatch}
    }),
    cowboy_study_sup:start_link().

stop(_State) ->
    ok = cowboy:stop_listener(http).

%% internal functions

10.创建toppage_h.erl文件,写下以下代码:


-module(toppage_h).
-author("admin").

%% API
-export([init/2]).
init(Req,Opts)->
  Req = cowboy_req:reply(200,#{
    <<"content-type">>=><<"text/plain">>
  },<<"Hello world!">>,Req),
  {ok,Req,Opts}.

11.idea快捷启动配置,具体如图

Run in module需要取消勾选,然后apply->ok保存。

最后点击顶部栏的运行按钮便会自动下cowboy依赖并运行,最后访问浏览器http://localhost:8080/即可。

12.代码联想,idea默认只会联想erlang sdk中的代码和工程中我们自己写的代码,但是cowboy的代码却无法联想,解决办法有两种。一定要先运行起来项目,否者类库可能没有下载完。

 第一:将找到rebar3下载的目录,将下载的库拷贝到erlang sdk中的lib目录,这种方式不推荐。

第二:设置idea项目,具体如下,File->Project Structure

然后选择1 Jars or Directories

最后点击ok,看清楚层级结构,这里的接口和idea中显示的层级结构不太一样,不要进入apps\cowboy_study\_build,

比如我的项目应该选择的目录是D:\code\erlangPreoject\cowboy_study\_build\default\lib

而不是D:\code\erlangPreoject\cowboy_study\apps\cowboy_study\_build\default\lib

由于我也是初学对rebar3这种项目结构也不太理解,也可能跟随版本不一样或者创建的项目命令不一样而不同,(我的是使用rebar new release xxx创建的),总之,找到cowboy在的父目录就行。

最后点击ok就可以联想和跳转代码了,但是这种方式只是个人找到的最好的方式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值