I have an issue with how mix tasks work within umbrella applications.
Our umbrella application has a large number of sub applications and a large number of dependencies. These dependencies connect to AMQP, our databases, elasticsearch, and other services. This has caused a large initialization time.
When running mix tasks, it seems all of these external services are needed and the full application needs to be initialized before any of the tasks can run.
This has caused the mix tasks defined to slow down immensely.
What is the idiomatic way in elixir to do mix tasks? How can we make sure that a mix task doesn't require the whole application to completely initialize before being run?
I have looked at the phoenix library and it seems to only initialize the phoenix application when `phx.server` is explicitly run. If this is the idiomatic way to accomplish this, how do we make sure that all of our dependencies don't also start as well?
I am looking for a proper way to do this in elixir that is supported by the community.