如何在mix中管理包的相互依赖性?

时间:2015-12-30 07:24:50

标签: elixir mix

我为elixir构建了一些有用的库。我把它们都放在十六进制上。我已经在库B中使用了库A,并且我刚刚将库B作为库A的依赖项。当然,库A不会构建。

  

加载项目时出错:a at / Users / me / fun / a / deps / ar   **(混合)尝试从“/Users/me/fun/a/deps/a/mix.exs”加载ArgumentParser.Mix文件,但是已在“/ Users / jistone / fun / a”中定义了另一个具有相同名称的项目/mix.exs“

这是我到目前为止所尝试的内容:

  • 从deps文件夹中删除a
  • 从mix.lock
  • 中删除a
  • 更改deps/b/mix.exs,为path: deps条目添加a以指向项目文件夹。
  • mix.exsa更改为b以指向各自的项目文件夹

所有失败并显示相应的错误消息。

所以问题是:当前正在构建的项目是如何让混合识别依赖的?

编辑:更多详情

a是用于解析命令行参数的库。包b是用于生成README.md文件的混合任务。在包b中,我使用包a来解析混合任务的命令行参数。现在我尝试使用mix任务为包a生成README.md,我得到了上述失败。

我可以通过启动iex会话并加载相关的梁文件来解决这个问题,但是如果可能的话,我想让混合任务正常工作......

1 个答案:

答案 0 :(得分:0)

我找到了3个解决方案(没有一个完美)

  • 将readme docgen项目构建为escript,然后将其作为依赖项删除。

  • 更改mix.exs文件中的项目名称,生成文档,然后将其更改回来。

  • 使用iex中的-pa arg加载所有梁文件并手动运行代码。