我有以下 mix.exs
defmodule App.MixProject do
use Mix.Project
@version "0.1.0"
def git_ref(), do: System.get_git_hash()
def project do
[
app: :app,
version: @version,
...
releases: [
app: fn ->
[version: @version <> "+" <> git_ref()]
end
]
]
end
end
我想在我的应用程序中输出 release 版本。我看到过这个问题,在 elixir 应用程序中访问项目版本,但所有答案都返回“0.1.0”,即“project.version”
如果我使用
_build/../app version
运行我的版本,它会返回正确的值,因此它能够获取 git 哈希值并设置键值,但该值会被写入到 version
命令的文件中。
我只是不知道如何“在运行时”获取它。这可能吗?我以为版本可能会覆盖以前的键值,但我猜它们是不同的?
据我所知,发布版本不包含在光束文件中,它纯粹是由发布脚本处理的元数据。我不相信有内置的方法来查找发行版本。但是,脚本 将版本导出到
RELEASE_VSN
,因此您可以使用它。
System.get_env("RELEASE_VSN")
这记录在mix release
文档的
环境变量部分:
- 发布的版本,否则使用最新版本。调用时可以将其设置为自定义值 发布。自定义值必须是现有的发行版本RELEASE_VSN
目录releases/
您可以使用: :application.get_key(:myapp, :vsn)