1

Elixir 用に構築した便利なライブラリがいくつかあります。私はそれらを両方ともヘックスに置きました。私はすでにライブラリ B でライブラリ A を使用しており、ライブラリ A の依存関係としてライブラリ B を組み込みました。もちろん、ライブラリ A はビルドされません。

/Users/me/fun/a/deps/ar でプロジェクトの読み込み中にエラーが発生しました ** (Mix) "/Users/me/fun/a/deps/a/mix.exs" から ArgumentParser.Mixfile を読み込もうとしていますが、 「/Users/jistone/fun/a/mix.exs」には同名の別のプロジェクトが既に定義されていました

これが私がこれまでに試したことです:

  • depsaフォルダからの削除
  • mix.lockaからの削除
  • を変更し、deps エントリがプロジェクト フォルダーを指すように をdeps/b/mix.exs追加します。path:a
  • およびそれぞれのプロジェクト フォルダーを指すように変更mix.exsするab

すべて失敗し、適切なエラー メッセージが表示されます。

問題は、現在ビルドされているプロジェクトによって依存関係が満たされていることを mix に認識させる方法です。


編集:詳細

パッケージaは、コマンド ライン引数を解析するためのライブラリです。パッケージbは、README.md ファイルを生成するための混合タスクです。package では、packagebを使用aして mix タスクのコマンド ライン引数を解析しました。mix タスクを使用して package の README.md を生成しようとするとa、上記のエラーが発生します。

iex セッションを開始して関連するビーム ファイルをロードすることで回避できますが、可能であれば混合タスクを機能させたいのですが...

4

1 に答える 1

0

私が見つけた3つの解決策(どれも完璧ではありません)

  • readme docgen プロジェクトを escript としてビルドし、依存関係から削除します。

  • mix.exs ファイル内のプロジェクトの名前を変更し、ドキュメントを生成してから元に戻します。

  • iex で -pa 引数を使用してすべてのビーム ファイルをロードし、コードを手動で実行します。

于 2015-12-31T19:56:53.630 に答える