Pergunta

As configurações padrão do Maven para solicitações HTTP, como as que o Maven usa para buscar artefatos de repositórios, incluem os seguintes cabeçalhos:

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

Este parece ser o comportamento documentado. O vagão Maven padrão para HTTP (ou seja, o cliente "leve") não parece permitir desativar esses cabeçalhos.

Por que o MAVEN é configurado dessa maneira por padrão? Para artefatos que realmente têm versões, eles nunca devem mudar, certo?

Trabalho em um ambiente em que muitos desenvolvedores compartilham um proxy HTTP comum e esse comportamento significa que os desenvolvedores nunca se beneficiam do cache. E nós temos dependencyManagement Em todas as nossas dependências e não use instantâneos ou outras versões que possam mudar, por isso parece que o cache deve ser seguro.

O que posso colocar nas minhas configurações.

Foi útil?

Solução

Este parece ser o comportamento documentado. O vagão Maven padrão para HTTP (ou seja, o cliente "leve") não parece permitir desativar esses cabeçalhos.

Na verdade, você posso configure o Vagão leve HTTP Cliente usando os Setters disponíveis, por exemplo (Maven 2.0+):

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

Ou até mesmo substituir ou fornecer cabeçalhos HTTP adicionais (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>

Isso é bem coberto por Brett Porter em Configurando conexões Maven HTTP.

Por que o MAVEN é configurado dessa maneira por padrão?

Guess Wild: é um padrão seguro para evitar problemas com proxies mal configurados (não tenho certeza de que isso é verdade).

O que posso colocar nas minhas configurações.

As configurações acima vão no settings.xml (é claro, adaptar o id se necessário, central é para o repositório padrão usado pelo maven).

Se não funcionar (deveria), a alternativa seria voltar para Vagão httpclient e configurá -lo como documentado no Configuração avançada do vagão http httpclient.

Referências

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top