Just tried out the new milestone-6 which Luke Daley pointed me to on Twitter. For at least one of our projects it keeps on going with the dependency resolution. It seems like it is continuously looping in the DependencyGraphBuilder. It might be that the dependencies we have together make up a cykel, which then makes it go round in circles.
gradle dependencies does not finish in a reasonable amount of time, ie I killed it after 10+ minutes. Both that and the build seem to be running insane once its doing the ‘Resolving dependencies’.
I’m having the same problem. Seems to be limited to my testCompile and testRuntime dependencies for a specific project.
I’m using a special ‘testFixtures’ configuration that extends from ‘testRuntime’ in order to accomplish project dependencies for unit test code in a multi-project build. So I define this:
Not sure if this is related or not but seems relevant.
For my setup, it seems there is a lot of conflict resolution taking place between different versions of modules that are direct dependencies vs transitive dependencies.
1.0-milestone-3 seems to handle it fine, but 1.0-milestone-6 does not. Haven’t tested other releases.
Zip contains 2 log files, one from milestone-3 and one from milestone-6. In both cases I simply executed ‘gradle :ws:dependencies -d’, where ‘ws’ is obviously the name of one project in a multi-project build.
With milestone-5 my build takes around 3 minutes but with milestone-6 it takes over 1 hour and 5 mins. In order for my build to succeed with milestone-6 I need to increase the heap to 1536m.
I have profiles for both milestone-5 and milestone-6 available but I need to scrub the client information out of them if anyone would like to see them.
I’ve been experiencing that same thing with 1.0m6.
I have a project with extensive dependency hierarchy that runs fine on v.0.9.2 but grinds to a halt on 1.0m6. (speed of 1.0m6 on smaller projects is impressive though) After few iterations of cleaning the cache between runs it seems to kind of slow down usually around same place (observing the download log statements).
Is there some good way of being able to examine what dependencies are giving m6 this grief? Not so sure that a dependency report would report to me which dependencies seem to problematic.
I’m going through a local nexus instance that has all necessary external maven repos proxied.
You all are doing a great job with gradle. I’ll wait patiently for the fix.
Could you be more explicit on what you think the problem is (or maybe I can find it on some other thread), if I wanted to take a look myself (remote debug for example)?
The basic problem is that the new algorithm considers every path through the dependency graph. This is because each edge in the graph can introduce excludes that affect the result deeper in the graph, and also to give accurate results when a conflict includes/excludes a particular subgraph. This approach doesn’t scale as the graph gets deeper.
So, we will tweak it to merge the paths. In particular, if there is a single path to a module version that does not exclude anything, we can ignore all the other incoming paths to that module version. And when this isn’t the case, we can use the intersection of the exclude rules for all incoming paths and have a single outgoing path (these two cases are really the same thing).
We’ve already linked the jira to this forum post. So since you are following this post (because you have participated in it), you’ll be notified when the issue is closed.
Verified the fix with 1.0-milestone-7-20111219065105+0100.
The same dependency graph which could not be resolved in milestone-6 was no problem for the milestone-7 snapshot. Performance seems to have drastically improved as well.
Thanks Adam and Gradle team! You’ve really built an outstanding tool. Keep up the good work.
First look is very promising. A build that is taking ages in 1.0m6 (>15 mins) is taking 5 mins in 1.0m7. Great work (and impressingly fast :)), thanks.
Will continue investigating with 1.0m7 and report if I hit any problems. Happy holidays!