Pregunta

La configuración por defecto para Maven solicitudes HTTP, como las que se utiliza Maven en busca de artefactos de repositorios, incluir los siguientes encabezados:

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

Esta parece ser la comportamiento documentado . El carro Maven por defecto para HTTP (es decir, el cliente "ligero") no parece permitir la desactivación de estas cabeceras.

¿Por qué se configura Maven de este modo por defecto? Para artefactos que en realidad tienen versiones, que nunca debe cambiar, ¿verdad?

Yo trabajo en un entorno donde muchos desarrolladores comparten un proxy HTTP común y este comportamiento significa que los desarrolladores no se benefician de almacenamiento en caché. Y, tenemos dependencyManagement en todas nuestras dependencias y no usar instantáneas u otras versiones que podrían cambiar, por lo que parece que el almacenamiento en caché debe ser seguro.

¿Qué puedo poner en mi settings.xml o pom.xml desactivar estas cabeceras y permitir que nuestra proxy para las respuestas de caché y devolverlos?

¿Fue útil?

Solución

  

Este parece ser el comportamiento documentado. El carro Maven por defecto para HTTP (es decir, el cliente "ligero") no parece permitir la desactivación de estas cabeceras.

En realidad, puede configurar el elemento Ligera HTTP cliente carro utilizando los fijadores disponibles, por ejemplo (Maven 2.0 +):

<servers>
  <server>
    <id>central</id>
    <configuration>
      <useCache>true</useCache>
    </configuration>
  </server>
</servers>

O incluso anular o proporcionar cabeceras HTTP adicionales (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>

Esto está muy bien cubierto por Brett Porter en Configuración Maven HTTP conexiones .

  

¿Por qué se configura Maven de este modo por defecto?

conjetura salvaje: se trata de un defecto de seguridad para evitar problemas con servidores proxy mal configurados (no muy seguro de que esto es verdad)

.
  

¿Qué puedo poner en mi settings.xml o pom.xml desactivar estas cabeceras y permitir que nuestra proxy para las respuestas de caché y devolverlos?

Los ajustes anteriores van en la settings.xml (por supuesto, adaptar el id, si es necesario, central es para el repositorio predeterminado utilizado por Maven).

Si no lo hace el trabajo (debería), la alternativa sería la de volver a HTTPClient carro y configurarlo como se documenta en el Configuración avanzada del carro HttpClient HTTP .

Referencias

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top