Fork me on GitHub
#tools-deps
<
2021-06-18
>
Cam Saul21:06:12

If I'm using a :local/root dependency, is there any way to tell it to use a specific profile alias from its deps.edn?

Alex Miller (Clojure team)21:06:14

but even better would be to describe your use case in a comment htere

Cam Saul21:06:29

Sure. Here's my specific use-case: 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. So I want to be able to have a top-level :ee aliases 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"}}}}}

Alex Miller (Clojure team)21:06:53

please put it on ask, I'll lose this here

seancorfield21:06:17

@camsaul You’ve introduced a new top-level key into your deps.edn file? I think that’s a bit of a “no-no” — you could put it under an alias though (aliases can be “just data”).

Cam Saul21:06:50

Sorry. Not :profiles. :aliases. I'll fix the example

Cam Saul21:06:06

I'm translated it from a project.clj file for the example and got my wires crossed a bit