This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2019-12-16
Channels
- # adventofcode (36)
- # announcements (30)
- # babashka (1)
- # beginners (161)
- # boot-dev (2)
- # bristol-clojurians (3)
- # clj-kondo (10)
- # clojure (125)
- # clojure-europe (10)
- # clojure-italy (4)
- # clojure-nl (7)
- # clojure-spec (1)
- # clojure-uk (26)
- # clojuredesign-podcast (3)
- # clojurescript (13)
- # core-async (5)
- # cryogen (3)
- # cursive (134)
- # data-science (8)
- # datascript (3)
- # datomic (32)
- # fulcro (24)
- # graalvm (2)
- # joker (5)
- # leiningen (5)
- # malli (18)
- # off-topic (14)
- # pathom (4)
- # re-frame (3)
- # reagent (11)
- # remote-jobs (3)
- # rewrite-clj (8)
- # shadow-cljs (47)
- # spacemacs (3)
- # sql (12)
- # vim (6)
Has someone seen this error before?
Module property-manager is managed by Maven and cannot be managed by Leiningen at the same time.
^ Yes, that ended up solving it. I was wondering if there would be a way to change that without reimporting
is there an issue with relative paths in deps.edn files? I’m getting "manifest type not detected when finding deps for …. in coordinate :local/root "../stuff"
or "../myjar.jar"
. The deps files are one level down from the project root. The clojure
tool seems to handle this
(this is a monorepo setup with one top-level dir per module, each module has a deps.edn file)
I don't know if the 2019.3 upgrade is necessary, Cursive EAP should be able to work with 2019.2.4
Colin had to change how deps projects work sometime during the 1.9.0 eaps, so you might need to re-import the project
I have been working with this project I mentioned during the 1.9.0eap builds, through 1.9.0 and the latest eap
tools-deps/cursive can’t handle that, so I merged everything shared into each deps edn.
top:
{:deps {foo {:local/root "foo"}
bar {:local/root "bar"}}}
foo:
{:deps {bar {:local/root "../bar"}}}
seems weird that it would, I’m using “use command line tools-deps” setting, so I assumed cursive is just shelling out
I imported this project at the root and ticked the 'search for projects recursively' thing
this top-level deps edn I made fails lower down with not being able to find the version of some transitive dependency
I get the error Coordinate type not loaded for library selmer/selmer in coordinate nil
from my top-level deps
I’m not sure if that’s the same problem with my module deps.edn. I would expect the same error if it were
for example one folder up from where your top depsedn is:
clojure -Stree -Sdeps '{:deps {your-top-project-name {:local/root "your-project-folder-name"}}}'
I have a test that does something like this to make sure I make the necessary exclusions etc. in my submodule depsedns
Are you using the latest version of tools.deps
? Because I've seen the same error when I used some old version.
@U09R86PA4 Yes, my understanding is that aliases are never transitive in deps.
I’m not quite clear after all that - are you still seeing differences between Cursive and CLI?
That scenario is a root deps.edn file which references dependencies using relative roots outside that project’s dir, correct?
but basically, yes, {:deps {foo {:local/root "../foo"}}
-> "Manifest type not detected when finding deps for foo in coordinate {:local/root "../foo"}"
cursive is not fine with it, even though this alias is checked in the deps tool window
this is less clearly a bug and more an expectation that those aliases are applied at import time
They definitely should be - that’s what the aliases tree in the deps tool window is for.
basically I’m just encountering sharp edge after sharp edge trying to do monorepo-style setup with a common alias with :default-deps
and :override-deps
for the whole repo
So when importing, I call tools.deps.alpha directly, and I pass it the aliases I want to use for project resolution.
but how would the aliases appear in the tool window if the project isn’t yet imported? the aliases are not known yet
Yes, you have to import once for Cursive to know about the aliases, then you can select them and reimport.
If you can never resolve the project without the aliases, then you can’t set it up correctly in Cursive. Hmm…
Actually, wait - IIRC I actually get the aliases by reading the deps.edn directly, not by resolving the project - that should work.
Perhaps when importing the project, Cursive should read the deps file, find the aliases, and then allow them to be selected during import.
I guess? I’m not sure how :default-deps
can work otherwise, since by definition these deps must be unresolveable unless an alias is applied
but :default-deps
is clearly very rarely used; I’m not even sure if it’s appropriate here, I’m just trying to replicate something that worked like this before
Yes I think you’re right about that. It’s true that this will apply to extra and override deps, but generally the project will still import correctly without them, and can then be reimported after the aliases are selected. The problem is default-deps, without which the project is essentially invalid.
I think that presenting the aliases during project import is the only sensible way to handle it.
I guess however that this might also be a problem if you add a new alias with override or default deps to an existing project.
Getting the feature set combination of lein/maven parent, managedDependencies, and :local/root
is pretty tough
I’ve filed this: https://github.com/cursive-ide/cursive/issues/2285. I’ll update it once I have repros of the various cases.
interestingly, depending on whether I have the alias checked, I will get different errors
Ok, you can work around the Manifest type error by explicitly specifying :deps/manifest :deps
.
{:override-deps {bar {:local/root "../bar" :deps/manifest :deps}}}
- I think this should work.