2015-12-30 44 views
1

我有幾個有用的庫,我已經爲elixir構建過。我已經把它們放在十六進制上了。我已經在庫B中使用庫A,並且我已經將庫B作爲庫A的依賴項。現在當然庫A不會生成。如何在組合中管理包相互依賴關係?

加載時出錯項目:a。在/用戶/我/有趣/ A/DEPS/AR **(混合)試圖從加載ArgumentParser.Mixfile「/用戶/我/有趣/ A/DEPS/A/mix.exs」,但具有相同名稱的另一個項目在已定義的‘/Users/jistone/fun/a/mix.exs’

這裏是我到目前爲止已經試過:

  • 從deps文件夾中刪除a
  • 刪除a from mix.lock
  • change deps/b/mix.exs,將path:添加爲a deps條目以指向項目文件夾。
  • 改變mix.exsab在各自的項目文件夾

指向所有的失敗與相應的錯誤消息。

所以問題是:如何通過構建當前項目來滿足混合來識別依賴關係?


編輯:更多細節

a是用於解析命令行參數的庫。程序包b是一個用於生成README.md文件的混合任務。在包b中,我使用包a來解析混合任務的命令行參數。現在我正在嘗試使用混合任務爲包a生成README.md,並且我得到了上述失敗。

我可以通過啓動一個會話IEX和加載相關的光束文件解決辦法,但我想獲得混合任務工作,如果可能的...

+1

循環依賴可能是代碼分離不夠好的標誌。你有沒有想過提取第三個共同部分的庫?也許將兩個庫合併成一個?在不知道代碼和特定接口的任何細節的情況下,很難說出最佳解決方案。 –

+0

完全同意帕特里克在這一個。我會試圖解決循環依賴本身,而不是試圖弄清楚如何得到混合(或十六進制)來處理它。 –

+0

@PatrickOscity真的沒有共同之處。我有一個用於解析命令行參數的庫和一個用於生成文檔的庫。兩個圖書館都使用自己和彼此。 – jisaacstone

回答

0

3解決方案,我發現(他們都不完美)

  • 將readme docgen項目構建爲escript,然後將其作爲依賴項移除。

  • 更改mix.exs文件中項目的名稱,生成文檔,然後將其更改回來。

  • 使用iex中的-pa arg加載所有光束文件並手動運行代碼。