【问题标题】:How to create a Mix task at the root of an umbrella project?如何在伞形项目的根目录下创建 Mix 任务?
【发布时间】:2016-10-14 14:27:00
【问题描述】:

我有一个Elixir 伞形项目。该项目中的每个应用程序都可以使用mix escript.build 编译成可执行文件。

我正在尝试从伞项目的根目录运行此命令并收到以下错误

** (RuntimeError) Trying to access Mix.Project.app_path for an umbrella project but umbrellas have no app

我明白为什么这不起作用。因此尝试在伞形项目的根目录下创建自定义混合任务。由于根目录没有lib 目录,我添加了一个并在其中创建了一个混合任务。但这并未在mix help 中列出。

如何在总括项目的根部定义自定义混合任务?

【问题讨论】:

  • 这个问题最初让我很困惑。您谈论为伞中的每个项目运行一个混合任务escript.build,然后——当这不起作用时——你跳转到创建一个新的混合任务。这意味着,不幸的是,何塞的回答并没有解决我的问题。我想我会开一个新的。
  • 我发现 github.com/vic/mix_under 已过时,但可能有助于解决原始问题。

标签: elixir elixir-mix


【解决方案1】:

您的总括项目没有代码。这是因为伞中的应用程序无论是否在伞内都可以正常工作。如果您想要一个跨多个应用程序共享的任务,您应该在伞形的常规应用程序中定义它,就像任何其他应用程序一样,并让使用该任务的其他应用程序依赖它,就像您对任何其他部分一样代码。

【讨论】:

  • 谢谢。这就说得通了。但是现在我错过了在根级别拥有mix.exs 的全部意义。我在想deps 添加了所有子项目都可以使用。看起来情况并非如此。为什么在根级别需要mix.exsdeps
  • 你很少使用这些。我能想到的唯一用例是伞形中的部门是你想在伞形级别上运行的混合任务。
猜你喜欢
  • 1970-01-01
  • 2021-09-30
  • 1970-01-01
  • 1970-01-01
  • 2016-11-11
  • 2017-09-10
  • 1970-01-01
  • 1970-01-01
  • 2016-03-06
相关资源
最近更新 更多