Elixir Mix发行版-如何将额外文件复制到凤凰卫视的tarball应用程序中?
我编写了以下mix.exs以将Phoenix应用程序作为tar ball发布,参考mix.Tasks.release的“步骤”部分 当我运行MIX_ENV=qa MIX release my_app时,它在_build/qa/rel/my_app下创建了一个种子目录,但当我提取生成的tar ball时,它不包含种子目录 如何重写mix.exs以将此目录插入tar球 Elixir版本是1.11.3 注意:已发布在Elixir论坛上。查看for mix.release,它似乎只在编译版本时从特定目录中进行选择 如果将种子复制到{release.path}/releases/{release.version},它将被包括在内 defp copy\u extra\u files释放do File.cp\r 应用程序/共享/私有/回购/种子, {release.path}/releases/{release.version}/seeds 释放 终止Elixir Mix发行版-如何将额外文件复制到凤凰卫视的tarball应用程序中?,elixir,phoenix-framework,elixir-mix,Elixir,Phoenix Framework,Elixir Mix,我编写了以下mix.exs以将Phoenix应用程序作为tar ball发布,参考mix.Tasks.release的“步骤”部分 当我运行MIX_ENV=qa MIX release my_app时,它在_build/qa/rel/my_app下创建了一个种子目录,但当我提取生成的tar ball时,它不包含种子目录 如何重写mix.exs以将此目录插入tar球 Elixir版本是1.11.3 注意:已发布在Elixir论坛上。查看for mix.release,它似乎只在编译版本时从特定目录
您不必手动复制任何内容,因为elixir会自动为您执行此操作,如果您查看my_app/lib/my_app-0.1.0/priv,您的priv文件夹中就有所有文件 现在,为了无需硬编码即可轻松访问这些资源,您可以使用以下路径:
这不仅适用于您的应用程序,例如,如果您需要phoenix静态资源,您可以在phoenix priv文件夹中找到它们。非常感谢!一个音符。要在Elixir代码中使用它,我们需要编写类似List.To_string:code.priv_dir:shared的代码。从Daniel的回答中可以明显看出,这是错误的方法。但是它对于复制priv/目录之外的文件可能很有用,所以我暂时不使用它。
defmodule MyApp.MixProject do
use Mix.Project
def project do
[
apps_path: "apps",
apps: [:shared, :admin, :shop],
version: "0.1.0",
start_permanent: Mix.env() in [:qa, :prod],
deps: deps(),
releases: [
my_app: [
applications: [
admin: :permanent,
shop: :permanent
],
steps: [:assemble, ©_extra_files/1, :tar]
]
],
default_release: :my_app
]
end
defp copy_extra_files(release) do
File.cp_r("apps/shared/priv/repo/seeds", release.path <> "/seeds")
release
end
defp deps do
[]
end
end
:code.priv_dir(:my_app)