我想在Elixir项目中使用一个闭源Erlang库。该库具有以下目录结构:
在我的Elixir项目中使用此库的推荐方法是什么?
答案 0 :(得分:4)
实现具有闭源OTP依赖关系的方法可能不止一种,但这里有一个应该有效的建议方法。
以下是git存储库中的示例闭合依赖项(仅存在rebar.config
和ebin
文件夹):https://github.com/potatosalad/erlang-closed-example/tree/closed(项目的源is on the master branch)。
如果您要托管来自ebin
和priv
的已关闭源文件并将rebar.config
文件添加到您自己的git存储库,则以下内容应该相同。另外,请确保您的git存储库是私有的(除非该项目的许可证另有说明)。
您应该能够将已关闭的源存储库添加为mix.exs
文件的依赖项:
defmodule Example.Mixfile do
use Mix.Project
def project do
[app: :example,
version: "0.0.1",
elixir: "~> 1.1",
build_embedded: Mix.env == :prod,
start_permanent: Mix.env == :prod,
deps: deps]
end
def application do
[applications: [:logger, :closed]]
end
defp deps do
[{:closed, git: "https://github.com/potatosalad/erlang-closed-example.git", branch: "closed"}]
end
end
此处提供了完整的示例项目:https://github.com/potatosalad/mix-closed-example
运行mix deps.get
后,我可以在iex -S mix
shell中执行以下操作:
iex> :closed.secret()
"this is a closed source library"
priv
下的共享对象文件也应该有效,但是依赖于操作系统和可用的库版本。