I have issue like #2753, but for now it have more sense.
:applications - all applications your application depends on at runtime. By default, this list is automatically inferred from your dependencies. Any extra Erlang/Elixir dependency must be specified in :extra_applications. Mix and other tools use the application list in order to start your dependencies before starting the application itself.
And really, when I add dependence to regular project, it is started, but when I add dependence to umbrella app, it isn’t started. Also I can’t define
extra_applications for umbrella project.
Can you explain me is it bug and should I create issue in elixir repo? Or how I can fix it (except creating app in apps directory with only one this dependence)?
My elixir version is
1.6.3, OS X 10.13.3
The top level
mix.exs does not define an application, none of its dependencies will be started. Each application inside
apps/ is an actual application and that’s where dependencies you want to depend on should go. The to level
mix.exs is really just for convenience development dependencies as far as I can tell.
I wonder if the generator should include comments to that effect.
Thank you for your reply
I have this comments before
# Dependencies listed here are available only for this
# project and cannot be accessed from applications inside
# the apps folder.
Hmm, now I don’t understand sense of umbrella project dependencies 'cos umbrella has no code, also this dependencies
cannot be accessed from applications inside the apps folder and also it isn’t started with umbrella project.
Ok, umbrella start every app in apps folder (can we call they dependencies of umbrella project? may be yes, may be no, but they starts). Can it also start other app, not listed in apps folder, but declared in other way?
If I correctly understood you, using umbrella we have one project with multiple applications in apps folder. Also project can’t have dependencies (but why there is
deps function in umbrella’s mix.exs… nevermind).
So now my question is: may elixir developers consider adding ability to declare other applications, that will be included to that project (using deps or in other way)?
Can you talk about what it is you’re trying to accomplish? I think a concrete example may make this easier.
There is a project called remix that allows to recompile elixir code on-the-fly that useful for development. But it isn’t working with umbrella’s and I tried to fix it in my fork.
When somebody adds remix to one application inside umbrella project, it starts working for all applications in project (so I added support of
remix option inside project config).
So if remix anyway start for all apps just after adding to one app deps, then we can add it to umbrella project deps - I thought. But that isn’t working.
So the only working solution I think is create additional application in apps folder with no code etc but with only one dependence just to start it together with other apps on project start. But there must be way to make that cleaner.