親切なドキュメントは無く、最初はうまくいかなかったのですがrelexを使っているプロジェクトを発見して、そこのmix.exsを真似するとうまくいきました。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Code.append_path "_build/#{Mix.env}/lib/relex/ebin" | |
defmodule Hoge.Mixfile do | |
use Mix.Project | |
def project do | |
[ app: :hoge, | |
version: "0.0.1", | |
elixir: "~> 0.12.5", | |
deps: deps ] | |
end | |
if Code.ensure_loaded?(Relex.Release) do | |
defmodule Release do | |
use Relex.Release | |
def applications, do: [:hoge] | |
end | |
end | |
def application do | |
[] | |
end | |
defp deps do | |
[ | |
{:relex, github: "yrashk/relex"} | |
] | |
end | |
end |
- depsにrelexを追加
- Code.append_pathでライブラリのパスを追加
- defmodule Release を追加
参考資料
特に追加設定をせず mix relex.assebleを実行すると、Erlangのランタイムまで丸ごと入ります。include_erts? や include_elixir? などのオプションがあり、Releaseモジュールの中で定義することでデフォルト設定を上書きできるようです。ドキュメントはなさそうなので、relexのrelease.exsを参照。
中でシェルスクリプトを生成しているため、純粋なWindows環境では上手く動かなそうに見えます。