Почему Maven отключает кэширование для HTTP-запросов?
Вопрос
Настройки Maven по умолчанию для HTTP-запросов, таких как те, которые Maven используют для извлечения артефактов из репозиториев, включают следующие заголовки:
Cache-control: no-cache
Cache-store: no-store
Pragma: no-cache
Expires: 0
Accept-Encoding: gzip
Это кажется Документированное поведение. Отказ Вагон Maven по умолчанию для HTTP (т. Е. Легкий «клиент»), похоже, не позволяет отключить эти заголовки.
Почему Maven настроен таким образом по умолчанию? Для артефактов, которые на самом деле имеют версии, они никогда не должны меняться, верно?
Я работаю в среде, где многие разработчики имеют общий HTTP-прокси, и это поведение означает, что разработчики никогда не выигрывают от кэширования. И у нас есть dependencyManagement
На всех наших зависимостях и не используйте снимки или другие версии, которые могут измениться, поэтому кажется, что кэширование должно быть безопасным.
Что я могу поставить в мои настройки .xml или Pom.xml, чтобы отключить эти заголовки и позволить нашему прокси кэшировать ответы и вернуть их?
Решение
Это кажется документальным поведением. Вагон Maven по умолчанию для HTTP (т. Е. Легкий «клиент»), похоже, не позволяет отключить эти заголовки.
На самом деле, ты могу Настроить Легкий HTTP WAGON. Клиент с использованием доступных посетителей, например (Maven 2.0+):
<servers>
<server>
<id>central</id>
<configuration>
<useCache>true</useCache>
</configuration>
</server>
</servers>
Или даже переопределить или предоставить дополнительные заголовки HTTP (Maven 2.1+):
<server>
<id>central</id>
<configuration>
<httpHeaders>
<property>
<name>User-Agent</name>
<value>Internal-Build-System/1.0</value>
</property>
</httpHeaders>
</configuration>
</server>
Это красиво покрыто Brett Porter в Настройка Maven HTTP-соединений.
Почему Maven настроен таким образом по умолчанию?
Дикая догадка: безопасно по умолчанию, чтобы избежать проблем с плохими настроенными прокси (не совсем уверен, что это правда).
Что я могу поставить в мои настройки .xml или Pom.xml, чтобы отключить эти заголовки и позволить нашему прокси кэшировать ответы и вернуть их?
Вышеуказанные настройки идут в settings.xml
(конечно, адаптировать id
если необходимо, central
Для хранилища по умолчанию используется Maven).
Если это не работает (он должен), альтернатива будет возвращаться к Httpclient wagon. и настроить его как документально в Усовершенствованная конфигурация HTTP HTTP WAGON.