def download
trace "Downloading #{to_spec}"
remote = Buildr.repositories.remote.map { |repo_url| URI === repo_url ? repo_url : URI.parse(repo_url) }
remote = remote.each { |repo_url| repo_url.path += '/' unless repo_url.path[-1] == '/' }
fail "Unable to download #{to_spec}. No remote repositories defined." if remote.empty?
exact_success = remote.find do |repo_url|
begin
path = "#{group_path}/#{id}/#{version}/#{File.basename(name)}"
download_artifact(repo_url + path)
true
rescue URI::NotFoundError
false
rescue Exception=>error
info error
trace error.backtrace.join("\n")
false
end
end
if exact_success
return
elsif snapshot?
download_m2_snapshot(remote)
else
fail_download(remote)
end
end