I migrated my app to Elixir 1.11 and I receive some warnings that I need to fix for the build to pass on CI.
I have a bunch of umbrella applications. Since all umbrella applications depend on common libraries I have decided to have an umbrella where I list all the common dependencies and the other umbrella to depend only on this one. This worked fine prior to Elixir 1.11. Now it seems that all the dependencies need to be listed as direct child not sub-child.
warning: Jason.encode!/1 defined in application :jason is used by the current application but the current application does not directly depend on :jason. To fix this, you must do one of: 1. If :jason is part of Erlang/Elixir, you must include it under :extra_applications inside "def application" in your mix.exs 2. If :jason is a dependency, make sure it is listed under "def deps" in your mix.exs 3. In case you don't want to add a requirement to :jason, you may optionally skip this warning by adding [xref: [exclude: Jason]] to your "def project" in mix.exs Found at 3 locations: ....
Elixir release readme says:
This new compiler check makes sure that all modules that you invoke are listed as part of your dependencies, emitting a warning like below otherwise
But I would not want to copy paste all common dependencies since it will be overkill to maintain and upgrade all dependencies. How can I fix this warning without moving my common deps (50+) to each umbrella app??