We have a specific use-case for this at Metabase and it's one of the things that's making it hard for us to transition to deps.edn
. Here's a simplified version of the problem we're facing:
At Metabase we ship both an FOSS edition (under the AGPL) and an Enterprise Edition under a commercial license. We can't ship the Oracle JDBC driver in the FOSS edition because the license terms of the JDBC driver make it AGPL-incompatible. However, we can ship it with the EE version.
The Oracle driver is itself a subproject in the larger Metabase-core repo.
We want to be able to have a top-level :ee
alias that merges in the :ee
aliases from the :local/root
stuff it pulls in. Example:
;; ./deps.edn
{:deps
{:local/root "oracle-driver"}
:aliases
{:ee
{:extra-deps {:local/root "oracle-driver", :alias :ee}}}}
;; oracle-driver/deps.edn
{:aliases
{:ee
{:extra-deps
{com.oracle.ojdbc/ojdbc8 {:mvn/version "19.3.0.0"}}}}}