Sounds great!

On Sun, Dec 11, 2011 at 10:37 PM, Daz DeBoer
<[email protected]>wrote:

> G'day
>
> We've been working on enhancing our dependency resolution so that we don't
> download artifact files unnecessarily. This is done by:
> 1) Look for any candidate artifacts that we suspect may be the one we want
> but we're not certain
> 2) Calculate the SHA1 hashes of these candidate artifacts
> 3) Request a "*.sha1" file from the server, and comparing the declared
> SHA1 value against each of the candidate artifacts
> 4) If one of the candidate matches the SHA1 value on the server, we use
> the candidate. If not, we download.
>
> Searching for candidates involves looking for previously downloaded
> artifacts that have the same ArtifactId as the one we're looking for: this
> is effectively [org]:[module]:[revision]:[type]:[artifact-name]:[extension].
> We currently search in:
> - The artifact cache of the current Gradle version, looking for artifacts
> that have been downloaded from a different repository
> - The artifact cache of the previous Gradle version, allowing us to
> upgrade the cache format without requiring re-download
> In the future, the plan is to look in ~/.m2 as well. This will make the
> out-of-the-box experience better for people switching from maven.
>
> So in all, this should reduce the number of downloads required when:
> - You upgrade Gradle versions
> - You use virtual repositories in Artifactory, with different URLs mapping
> to the same artifacts
> - You switch to use a repository manager (like Artifactory) from accessing
> repositories directly
>
> The nice thing about this model is that we only request the sha1 file from
> the server if we have a likely candidate to match against.
> This currently only works when the server has a .sha1 file for the
> requested artifact. The plan is to extend this to include md5 hash files,
> as well as custom HTTP headers like those provided by Artifactory.
>
> --
> Darrell (Daz) DeBoer
> Principal Engineer, Gradleware
> http://www.gradleware.com
>
>


-- 
Szczepan Faber
Principal engineer@gradleware
Lead@mockito

Reply via email to