For a library project, would you say it's better practice to have the org.clojure/clojure
dep declared as a top-level one, or a :provided
one?
As a consumer, having to apply :exclusions [org.clojure/clojure]
feels noisy so I'd be inclined towards :provided
(as a producer)
Applications will generally have a specific Clojure dependency I'm their : dependencies, overruling whatever your library uses. : excludes only matters when there's no direct dependency
My general policy is to use whatever Clojure version is current when the library is created, and then try to keep compatibility for that version as long as practical. It's a good idea to mention the minimum Clojure version you need in your readme.
Forgot to say: sounds reasonable, thanks! 🍻
OTOH, I recklessly use 1.10 features without intention of supporting prior ones. Maybe good to use the dependency system to automatically convey this requirement
@vemv it seems all projects declare explicit clj versions so they never transitively resolve to your lib’s version. I guess it sort of is an expected “provided” dep though. So that’s interesting to think about.