Removed the checksums property from the LegacyDependencyResolver, and inlined RepositoryArtifactCache.ExternalResourceDownloader into the RepositoryArtifactCache implementation.
Removed the m2Compatible, root and pattern properties from the legacy DependencyResolvers, and simplified the ExternalResourceResolver implementations.
Changed ExternalResourceResolver so that it represents patterns using ResourcePattern instead of String. Removed pattern methods from LegacyDependencyResolver.
Local resource is already a LocallyAvailableExternalResource - just cast it rather than unpack and recreate.
Moved RepositoryTransport.convertToPath() to the ResourcePattern implementations. Paths are always URIs now.
Use URI instead of String to identity ExternalResource instances.
Use URI instead of String to list and upload external resources.
Changed DefaultExternalResourceArtifactResolver so that it bolts directly on to CacheAwareExternalResourceAccessor rather than via ExternalResourceRepository. This is a step towards moving the artifact-at-url caching into a single place.
Moved responsibility for downloading artifacts into the cache to live in DefaultCacheAwareExternalResourceAccessor, and removed the RepositoryArtifactCache implementations.
Changed DefaultCacheAwareExternalResourceAccessor so that it does not try to copy the cached file back into the cache on a resource-by-url cache hit.
Added a little more int test coverage for reusing artifacts from the m2 repo.