Greatly reducing the number of times the download location for a library is determined (via caching of Set for tool ids)
Parallelizing the lookup of the download URL and using HTTP/2
Utilize Property over Provider since a property caches its computed value, while a Provider does not
Further work:
Instead of caching on the tool-level, it should cache on the (List<URI> repositoryUri, String path) level, since a transitive dependency may still be used by multiple different tools, but a download URI for it only has to be looked up once.
Speeds up publishing of NeoForge by:
Property
overProvider
since a property caches its computed value, while a Provider does notFurther work: Instead of caching on the tool-level, it should cache on the
(List<URI> repositoryUri, String path)
level, since a transitive dependency may still be used by multiple different tools, but a download URI for it only has to be looked up once.