如何将erlang包添加到elixir应用程序中

时间:2018-02-07 20:38:55

标签: elixir phoenix-framework ecto

我正在尝试使用edeliver构建我的elixir应用版本,但是我收到以下错误。

==> Failed to build release:

    Undefined applications: [xmerl]

我正在尝试将xmerl添加到deps文件中的mix.exs列表中,但我不确定如何执行此操作。

非常感谢任何帮助。提前致谢

这是目前在我的项目中的deps列表...

defp deps do
  [{:phoenix, "~> 1.2.1"},
   {:appsignal, "~> 1.0"},
   {:phoenix_pubsub, "~> 1.0"},
   {:phoenix_ecto, "~> 3.0"},
   {:postgrex, ">= 0.0.0"},
   {:phoenix_html, "~> 2.6"},
   {:phoenix_live_reload, "~> 1.0", only: :dev},
   {:phoenix_html_sanitizer, "~> 1.0.0"},
   {:gettext, "~> 0.11"},
   {:cowboy, "~> 1.0"},
   {:earmark, "~> 1.1"},
   {:comeonin, "~> 3.0"},
   {:credo, "~> 0.7.2", only: [:dev, :test]},
   {:timex, "~> 3.0"},
   {:segment, github: "tonydaly/analytics-elixir"},
   {:bamboo, "~> 0.7"},
   {:bamboo_smtp, "~> 1.2.1"},
   {:mock, "~> 0.2.0", only: :test},
   {:faker, "~> 0.7"},
   {:wallaby, "~> 0.16.1"},
   {:ecto_factory, "~> 0.0.6"},
   {:oxleas_adhd, in_umbrella: true},
   {:plug, "~>1.3.5", override: true}
 ]
end

2 个答案:

答案 0 :(得分:3)

为了将来的访客,我会在这里提出正确答案。

mix.exs文件应声明两个回调:project和(可选)application

当项目要作为应用程序运行时使用后者,并且超出了此问题的范围。前者必须返回一个关键字列表,描述当前的Mix.Project。此关键字列表可能显然包含deps关键字,以返回此项目的依赖项列表。这些依赖项将由mix工具半自动管理(提取,重建等)。

默认情况下,mix new任务为project回调生成一个支架,返回此列表,如:

  def project do
    [
      app: :blah,
      version: "0.1.0",
      elixir: "~> 1.7-dev",
      start_permanent: Mix.env() == :prod,
      deps: deps() # ⇐ HERE
    ]
  end

如果坚持使用建议的脚手架,他们应该实现私有函数deps(参见上面的最后一行。)

如果您有一个依赖项,只需在原地进行:

  def project do
    [
      app: :blah,
      version: "0.1.0",
      elixir: "~> 1.7-dev",
      start_permanent: Mix.env() == :prod,
      deps: [{:exmerl, "~> 0.1"}] # ⇐ HERE
    ]
  end

exmerlxmerlexml或其他任何内容的Elixir包装器。

答案 1 :(得分:0)

def deps do
  [
    {:xmerl, "~> 1.3.16"}
  ]
end

你必须获取deps,

$ mix deps.get