Почему Maven отключает кэширование для HTTP-запросов? - PullRequest
6 голосов
/ 29 октября 2010

Параметры Maven по умолчанию для HTTP-запросов, такие как те, которые Maven использует для извлечения артефактов из репозиториев, включают следующие заголовки:

Cache-control: no-cache
Cache-store: no-store
Pragma: no-cache
Expires: 0
Accept-Encoding: gzip

Это, похоже, документированное поведение ,По умолчанию универсал Maven для HTTP (т. Е. «Облегченный» клиент) не позволяет отключить эти заголовки.

Почему Maven настроен таким образом по умолчанию?Для артефактов, которые на самом деле имеют версии, они никогда не должны изменяться, верно?

Я работаю в среде, где многие разработчики используют общий HTTP-прокси, и это означает, что разработчики никогда не получат выгоду от кэширования.И у нас есть dependencyManagement на всех наших зависимостях, и мы не используем SNAPSHOT или другие версии, которые могут измениться, поэтому кажется, что кэширование должно быть безопасным.

Что я могу поместить в мои settings.xml или pom.xml отключить эти заголовки и позволить нашему прокси-серверу кэшировать ответы и возвращать их?

1 Ответ

7 голосов
/ 30 октября 2010

Это похоже на документированное поведение. По умолчанию универсал 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>

Это прекрасно описано Бреттом Портером в Настройка Maven HTTP-соединений .

Почему Maven настроен таким образом по умолчанию?

Дикая догадка: по умолчанию это безопасный способ избежать проблем с плохо настроенными прокси (не совсем уверен, что это правда).

Что я могу добавить в мои settings.xml или pom.xml, чтобы отключить эти заголовки и позволить нашему прокси-серверу кэшировать ответы и возвращать их?

Вышеуказанные настройки входят в settings.xml (конечно, при необходимости измените id, central для репозитория по умолчанию, используемого Maven).

Если он не работает (должен), альтернативой будет переключиться обратно на HTTPClient Wagon и настроить его, как описано в Расширенные настройки HttpClient HTTP Wagon .

Ссылки

...