在应用程序中获取 Elixir Mix 发行版本

问题描述 投票:0回答:2

我有以下 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
命令的文件中。

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

elixir elixir-mix
2个回答
4
投票

据我所知,发布版本不包含在光束文件中,它纯粹是由发布脚本处理的元数据。我不相信有内置的方法来查找发行版本。但是,脚本 将版本导出到

RELEASE_VSN
,因此您可以使用它。

System.get_env("RELEASE_VSN")

这记录在mix release文档的

环境变量
部分:

  • RELEASE_VSN
    - 发布的版本,否则使用最新版本。调用时可以将其设置为自定义值 发布。自定义值必须是现有的发行版本
    releases/
    目录

0
投票

您可以使用: :application.get_key(:myapp, :vsn)

© www.soinside.com 2019 - 2024. All rights reserved.