Fork me on GitHub

Is there a reason the -Spom option does not offer any way to configure the generated pom (i.e. project name and group id are the directory name and the version is hardcoded to 0.1.0)?

Alex Miller (Clojure team)18:05:05

-Spom syncs an existing pom, so run it, then modify the pom. subsequent runs will keep that stuff.


If I run this

clj -Srepro -Sdeps '{:deps {org.clojure/clojure {:mvn/version "1.9.0"}}}' -Spath
In a directory containing a deps.edn that looks like this:
{:deps {org.clojure/clojure    {:mvn/version "1.8.0"}
        org.clojure/core.async {:mvn/version "0.4.474"}}}
I get a classpath containing core.async. Why does that happen? I thought -Sdeps was supposed to be the final deps.edn file.


it looks like dep.edns are merged, and -Sdeps is the final value merged


Oh, you're right. Hmm, ok. It'd be nice to have a way to easily reproduce issues by explicitly passing in the one and only deps edn.


There's an argument with -Srepro that it should ignore everything except the current directory's deps.edn -- on the grounds that it would make a project "reproducible". As it is, ignoring the install directory with -Srepro means that you need extra stuff in your project deps.edn that you wouldn't normally need (`:paths`, repos?) which means you can't just take an arbitrary project's deps.edn file and run it with -Srepro unless that's how the author expected it to be run.

👍 4

I was asking for a directory independent way of running clj. That topic is somewhat related but still different.


Yeah, having more control over which of the four deps locations were consulted would be very nice.


And your scenario -- ignoring the current directory's deps.edn -- is a good use case that it would be nice to see supported...