Hey all

Currently, if you want to be guaranteed of getting the very latest SNAPSHOT
for your build, you need to use:
configuration.name.resolutionStrategy.cacheChangingModulesFor 0, 'seconds'

This has the unfortunate side-effect of causing every sub-project in a
multi-project build to verify and possibly download the SNAPSHOT artifact.
So if you have 100 subprojects, every one will make a remote call to check
if the SNAPSHOT is up-to-date, and if no SHA1 file is available to check,
you'll download the SNAPSHOT artifact 100 times!

It's trivial for me to update Gradle to only resolve a SNAPSHOT once per
build, using the cached artifact for the lifetime of the build. The main
downside to this is that we would no longer support the scenario
multi-project scenario:
/sub-project1 -- Resolve mymodule-SNAPSHOT
/sub-project1 -- Publish a new version of mymodule-SNAPSHOT
/sub-project2 -- Resolve mymodule-SNAPSHOT, and expect the newly published
one

I guess we could support this by invalidating the cached entry when we
publish a new version, but what if the publication is done via a custom
task?
Perhaps we need a new way to express that a module may change _during_ the
build, so we can't even rely on a cached version from within this build. My
gut feel is that the common scenario is to use the latest version, but only
check once per build.

Any feedback? What use-cases do we need to support?
-- 
Darrell (Daz) DeBoer
Principal Engineer, Gradleware
http://www.gradleware.com

Reply via email to