Welcome! Please see the About page for a little more info on how this works.

+1 vote
in tools.deps.alpha by

There is an assumption that tools.deps will carry a :scope "provided" into the pom.xml when -Spom is run. However, not only is it not carried over, but if it already exists in the pom.xml then it is deleted...

For example:

{:deps {com.datomic/datomic-free {:mvn/version "0.9.5697" :scope "provided"}}}

becomes:

<dependency>
  <groupId>com.datomic</groupId>
  <artifactId>datomic-free</artifactId>
  <version>0.9.5697</version>
</dependency>

but should be:

<dependency>
  <groupId>com.datomic</groupId>
  <artifactId>datomic-free</artifactId>
  <version>0.9.5697</version>
  <scope>provided</scope>
</dependency>

1 Answer

+2 votes
by
selected by
 
Best answer

tools.deps does not support :scope.

by
Here's a patch that adds support

From aec6d48bf828ccdd076be248738155d97fa04477 Mon Sep 17 00:00:00 2001
From: Thomas Spellman <thos37@gmail.com>
Date: Sat, 22 Feb 2020 22:09:49 -0800
Subject: [PATCH] support :scope in deps map when generating pom.xml

---
 src/main/clojure/clojure/tools/deps/alpha/gen/pom.clj | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/main/clojure/clojure/tools/deps/alpha/gen/pom.clj b/src/main/clojure/clojure/tools/deps/alpha/gen/pom.clj
index 303ae93..1f24d31 100644
--- a/src/main/clojure/clojure/tools/deps/alpha/gen/pom.clj
+++ b/src/main/clojure/clojure/tools/deps/alpha/gen/pom.clj
@@ -21,7 +21,7 @@
 (xml/alias-uri 'pom "http://maven.apache.org/POM/4.0.0")
 
 (defn- to-dep
-  [[lib {:keys [mvn/version classifier exclusions] :as coord}]]
+  [[lib {:keys [mvn/version classifier exclusions scope] :as coord}]]
   (if version
     (cond->
       [::pom/dependency
@@ -38,7 +38,10 @@
                     [::pom/exclusion
                      [::pom/groupId (namespace excl)]
                      [::pom/artifactId (name excl)]])
-               exclusions)]))
+               exclusions)])
+
+      scope
+      (conj [::pom/scope scope]))
     (printerrln "Skipping coordinate:" coord)))
 
 (defn- gen-deps
--
2.21.0 (Apple Git-122.2)
by
Thanks for the patch but we intentionally don’t support it and don’t want to add it. The clj approach is to use aliases to allow the construction of classpath variants. If you want this in your pom, you will need to maintain your own pom.
by
Ah, I see now.  That makes sense.  Thanks!
...