The default Maven settings for HTTP requests, such as the ones Maven uses to fetch artifacts from repositories, include the following headers:
Cache-control: no-cache
Cache-store: no-store
Pragma: no-cache
Expires: 0
Accept-Encoding: gzip
This seems to be the documented behavior. The default Maven wagon for HTTP (i.e., the "lightweight" client) does not seem to allow disabling these headers.
Why is Maven configured in this way by default? For artifacts that actually have versions, they should never change, right?
I work in an environment where many developers share a common HTTP proxy and this behavior means that developers never benefit from caching. And, we have dependencyManagement
on all of our dependencies and do not use SNAPSHOTs or other versions that might change, so it seems that caching should be safe.
What can I put in my settings.xml or pom.xml to disable these headers and allow our proxy to cache responses and return them?