Previous versions of Gradle would fall through to the next repository if resolution in one repository failed. This may cause potentially indeterministic resolution result. This PR changes this behaviour and will explicitly rethrow exceptions which occur in dependency resolution instead of quietly continue to the next repository.
What's more, this PR introduces a RepositoryBlacklister. Exceptions thrown during dependency resolution are categoried as follows:
1. Caused by HTTP error status code (other than 2xx/3xx/404) These exceptions would be considered as "recoverable" since the server seems still to be able to respond. 2. Caused by other IOException/UncheckedIOException These exceptions would be considered as "unrecoverable" and the repository would be blacklisted in the build.