Почему Maven отключает кэширование для HTTP-запросов?

StackOverflow https://stackoverflow.com/questions/4054884

  •  27-09-2019
  •  | 
  •  

Вопрос

Настройки 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.

Рекомендации

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top