lein-try icon indicating copy to clipboard operation
lein-try copied to clipboard

Fallback to latest snapshot, if no releases exist

Open pmonks opened this issue 9 years ago • 2 comments

Steps to reproduce:

  1. lein try with a project that has only deployed snapshots, but no releases

Expected result:

  • Snapshot version is downloaded and REPL is started

Actual result:

  • Exception with the following message, then Leiningen hangs:
Failed to resolve version for [group/project]:jar:RELEASE: Could not find metadata [group/project]/maven-metadata.xml in local (/Users/redacted/.m2/repository)
This could be due to a typo in :dependencies or network issues.
If you are behind a proxy, try setting the 'http_proxy' environment variable.
Exception in thread "Thread-3" clojure.lang.ExceptionInfo: Could not resolve dependencies {:suppress-msg true, :exit-code 1}

pmonks avatar Jan 01 '17 22:01 pmonks

Here is a concrete example (which will stop being a good reproduction case once the org.symphonyoss/clj-symphony project deploys a release):

$ lein try org.symphonyoss/clj-symphony
Failed to resolve version for org.symphonyoss:clj-symphony:jar:RELEASE: Could not find metadata org.symphonyoss:clj-symphony/maven-metadata.xml in local (/Users/pmonks/.m2/repository)
This could be due to a typo in :dependencies or network issues.
If you are behind a proxy, try setting the 'http_proxy' environment variable.
Exception in thread "Thread-3" clojure.lang.ExceptionInfo: Could not resolve dependencies {:suppress-msg true, :exit-code 1}
	at clojure.core$ex_info.invokeStatic(core.clj:4617)
	at clojure.core$ex_info.invoke(core.clj:4617)
	at leiningen.core.classpath$fn__6722.invokeStatic(classpath.clj:298)
	at leiningen.core.classpath$fn__6722.invoke(classpath.clj:253)
	at clojure.lang.AFn.applyToHelper(AFn.java:165)
	at clojure.lang.AFn.applyTo(AFn.java:144)
	at clojure.core$apply.invokeStatic(core.clj:646)
	at clojure.core$memoize$fn__5708.doInvoke(core.clj:6107)
	at clojure.lang.RestFn.invoke(RestFn.java:457)
	at leiningen.core.classpath$get_dependencies.invokeStatic(classpath.clj:421)
	at leiningen.core.classpath$get_dependencies.doInvoke(classpath.clj:413)
	at clojure.lang.RestFn.invoke(RestFn.java:445)
	at clojure.lang.AFn.applyToHelper(AFn.java:160)
	at clojure.lang.RestFn.applyTo(RestFn.java:132)
	at clojure.core$apply.invokeStatic(core.clj:652)
	at clojure.core$apply.invoke(core.clj:641)
	at leiningen.core.classpath$resolve_managed_dependencies.invokeStatic(classpath.clj:509)
	at leiningen.core.classpath$resolve_managed_dependencies.doInvoke(classpath.clj:496)
	at clojure.lang.RestFn.invoke(RestFn.java:445)
	at leiningen.core.eval$prep.invokeStatic(eval.clj:85)
	at leiningen.core.eval$prep.invoke(eval.clj:73)
	at leiningen.core.eval$eval_in_project.invokeStatic(eval.clj:362)
	at leiningen.core.eval$eval_in_project.invoke(eval.clj:356)
	at leiningen.repl$server$fn__11838.invoke(repl.clj:243)
	at clojure.lang.AFn.applyToHelper(AFn.java:152)
	at clojure.lang.AFn.applyTo(AFn.java:144)
	at clojure.core$apply.invokeStatic(core.clj:646)
	at clojure.core$with_bindings_STAR_.invokeStatic(core.clj:1881)
	at clojure.core$with_bindings_STAR_.doInvoke(core.clj:1881)
	at clojure.lang.RestFn.invoke(RestFn.java:425)
	at clojure.lang.AFn.applyToHelper(AFn.java:156)
	at clojure.lang.RestFn.applyTo(RestFn.java:132)
	at clojure.core$apply.invokeStatic(core.clj:650)
	at clojure.core$bound_fn_STAR_$fn__4671.doInvoke(core.clj:1911)
	at clojure.lang.RestFn.invoke(RestFn.java:397)
	at clojure.lang.AFn.run(AFn.java:22)
	at java.lang.Thread.run(Thread.java:745)
Caused by: org.sonatype.aether.resolution.DependencyResolutionException: Failed to collect dependencies for [#object[org.sonatype.aether.graph.Dependency 0x66021166 "org.clojure:clojure:jar:1.8.0 (compile)"] #object[org.sonatype.aether.graph.Dependency 0x781a8814 "org.symphonyoss.symphony:symphony-client:jar:1.0.0-SNAPSHOT (compile)"] #object[org.sonatype.aether.graph.Dependency 0x12fa609f "org.clojure:tools.nrepl:jar:0.2.12 (compile)"] #object[org.sonatype.aether.graph.Dependency 0x25ff650 "clojure-complete:clojure-complete:jar:0.2.4 (compile)"] #object[org.sonatype.aether.graph.Dependency 0x74204e5c "midje:midje:jar:1.8.3 (test)"] #object[org.sonatype.aether.graph.Dependency 0x58d632e4 "org.symphonyoss:clj-symphony:jar:RELEASE (compile)"] #object[org.sonatype.aether.graph.Dependency 0x19e94ff9 "venantius:ultra:jar:0.5.0 (compile)"]]
	at org.sonatype.aether.impl.internal.DefaultRepositorySystem.resolveDependencies(DefaultRepositorySystem.java:371)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93)
	at clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:28)
	at cemerick.pomegranate.aether$resolve_dependencies_STAR_.invokeStatic(aether.clj:776)
	at cemerick.pomegranate.aether$resolve_dependencies_STAR_.doInvoke(aether.clj:677)
	at clojure.lang.RestFn.applyTo(RestFn.java:137)
	at clojure.core$apply.invokeStatic(core.clj:646)
	at clojure.core$apply.invoke(core.clj:641)
	at cemerick.pomegranate.aether$resolve_dependencies.invokeStatic(aether.clj:785)
	at cemerick.pomegranate.aether$resolve_dependencies.doInvoke(aether.clj:779)
	at clojure.lang.RestFn.invoke(RestFn.java:2793)
	at leiningen.core.classpath$fn__6722.invokeStatic(classpath.clj:260)
	... 34 more
Caused by: org.sonatype.aether.collection.DependencyCollectionException: Failed to collect dependencies for [#object[org.sonatype.aether.graph.Dependency 0x66021166 "org.clojure:clojure:jar:1.8.0 (compile)"] #object[org.sonatype.aether.graph.Dependency 0x781a8814 "org.symphonyoss.symphony:symphony-client:jar:1.0.0-SNAPSHOT (compile)"] #object[org.sonatype.aether.graph.Dependency 0x12fa609f "org.clojure:tools.nrepl:jar:0.2.12 (compile)"] #object[org.sonatype.aether.graph.Dependency 0x25ff650 "clojure-complete:clojure-complete:jar:0.2.4 (compile)"] #object[org.sonatype.aether.graph.Dependency 0x74204e5c "midje:midje:jar:1.8.3 (test)"] #object[org.sonatype.aether.graph.Dependency 0x58d632e4 "org.symphonyoss:clj-symphony:jar:RELEASE (compile)"] #object[org.sonatype.aether.graph.Dependency 0x19e94ff9 "venantius:ultra:jar:0.5.0 (compile)"]]
	at org.sonatype.aether.impl.internal.DefaultDependencyCollector.collectDependencies(DefaultDependencyCollector.java:258)
	at org.sonatype.aether.impl.internal.DefaultRepositorySystem.resolveDependencies(DefaultRepositorySystem.java:333)
	... 49 more
Caused by: org.sonatype.aether.resolution.ArtifactDescriptorException: Failed to read artifact descriptor for org.symphonyoss:clj-symphony:jar:RELEASE
	at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:257)
	at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.readArtifactDescriptor(DefaultArtifactDescriptorReader.java:186)
	at org.sonatype.aether.impl.internal.DefaultDependencyCollector.process(DefaultDependencyCollector.java:412)
	at org.sonatype.aether.impl.internal.DefaultDependencyCollector.collectDependencies(DefaultDependencyCollector.java:240)
	... 50 more
Caused by: org.sonatype.aether.resolution.VersionResolutionException: Failed to resolve version for org.symphonyoss:clj-symphony:jar:RELEASE: Could not find metadata org.symphonyoss:clj-symphony/maven-metadata.xml in local (/Users/pmonks/.m2/repository)
	at org.apache.maven.repository.internal.DefaultVersionResolver.resolveVersion(DefaultVersionResolver.java:287)
	at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:250)
	... 53 more
Caused by: org.sonatype.aether.transfer.MetadataNotFoundException: Could not find metadata org.symphonyoss:clj-symphony/maven-metadata.xml in local (/Users/pmonks/.m2/repository)
	at org.sonatype.aether.impl.internal.DefaultMetadataResolver.resolve(DefaultMetadataResolver.java:215)
	at org.sonatype.aether.impl.internal.DefaultMetadataResolver.resolveMetadata(DefaultMetadataResolver.java:173)
	at org.apache.maven.repository.internal.DefaultVersionResolver.resolveVersion(DefaultVersionResolver.java:225)
	... 54 more

The workaround is to force the use of a specific snapshot version:

$ lein try org.symphonyoss/clj-symphony 0.1.0-SNAPSHOT

pmonks avatar Jan 01 '17 22:01 pmonks

Hmm, I can't say for certain where the issue is coming from. I suspect it may have to do with some poor interaction between Leiningen, the libraries it uses for dependency management, and the local maven cache. I'll look a bit at the code to see if there are any places in the APIs we use to clear this up, but I can't make any promises. PRs welcome.

qtrfeast avatar Jan 10 '17 21:01 qtrfeast