在应用程序中获取elixir mix发布版本

在应用程序中获取elixir mix发布版本,elixir,elixir-mix,beam-release,Elixir,Elixir Mix,Beam Release,我有下面的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 ->

我有下面的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
defmodule App.MixProject do
使用Mix.Project
@版本“0.1.0”
def git_ref(),do:System.get_git_hash()
def项目do
[
app::app,
版本:@version,
...
发布:[
app:fn->
[版本:@version“+”git_ref()]
结束
]
]
结束
结束
我想在我的应用程序中输出发布版本。我见过这个问题,但所有答案都返回“0.1.0”,即“project.version”

如果我使用
\u build/./app version
运行我的发行版,它将返回正确的值,因此它能够获取git散列并设置键值,但该值将被写入
version
命令的文件中


我只是不知道如何在“运行时”获取它。这可能吗?我认为版本可能会覆盖以前的键值,但我猜它们是不同的?

据我所知,发布版本不包括在beam文件中,它是由发布脚本处理的纯元数据。我不相信有一个内置的方式来查找发布版本。但是,脚本,所以您可以使用它

System.get_env("RELEASE_VSN")
这在
mix-release
文档的章节中有记录:

  • RELEASE\u VSN
    -版本,否则使用最新版本。在调用 释放。自定义值必须是中的现有发布版本
    发布/
    目录

@version“0.1.0”系统。获取\u git\u hash()
?不确定你在问什么我建议一种修复方法。只需定义
@version
,如我上面所示。感觉可能就是这样。