依赖本地项目或私有仓库的 Elixir 依赖项

4

我在Elixir和Phoenix上都是新手。目前我有一些关于从私人或本地mix项目下载或使用库的疑虑。 假设我的库项目名称为:my_custom_mix_app,它是一个使用gen_server的OTP应用程序。我希望它能够像下面这个片段一样从我的Phoenix应用程序中运行。

defp deps do
    [{:phoenix, "~> 1.2.1"},
    {:phoenix_pubsub, "~> 1.0"},
    {:phoenix_ecto, "~> 3.0"},
    {:mariaex, ">= 0.0.0"},
    {:phoenix_html, "~> 2.6"},
    {:phoenix_live_reload, "~> 1.0", only: :dev},
    {:gettext, "~> 0.11"},
    {:cowboy, "~> 1.0"},
    {:my_custom_mix_app, "~> 1.0"]
end

既然我来自于Java背景,我可以使用Maven或Gradle完成这项工作,即使该库项目位于我的本地驱动器中,而不是注册在任何远程Maven存储库中。

在Elixir中如何实现呢?

附言:我查看了这篇文章,关于创建Elixir依赖项,但它没有解决我对一个未注册的库项目的担忧。

谢谢。

2个回答

4
使用内部应用程序依赖项有两种方式:
1. 以“伞”形式进行使用。
2. 作为本地包管理器。
defp deps do
    ...
    {:my_app, in_umbrella: true}
end

non-umbrella

defp deps do
    ...
    {:my_app, path: "path/to/the/app"}
    {:my_app_git, git: "https://repo.com/my/app.git}
end

这里有详细的文档 https://hexdocs.pm/mix/Mix.Tasks.Deps.html


1
路径方法在开发依赖项时非常有效。每当您重新启动主项目时,依赖项都会被重新编译。 - Steve Pallen

1

您可以通过添加 path: 键来提供项目的本地路径,如下所示:

defp deps do
    ...
    {:my_custom_mix_app, path: "path/to/the/app"}
end

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接