Domanda

Le impostazioni predefinite per Maven HTTP richieste, come ad esempio quelli Maven utilizza per recuperare gli artefatti da repository, includere le seguenti intestazioni:

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

Questo sembra essere il comportamento documentato . Il carro Maven default per HTTP (vale a dire, il client "leggero") non sembra consentire la disattivazione queste intestazioni.

Perché è Maven configurato in questo modo di default? Per artefatti che in realtà hanno le versioni, non dovrebbero mai cambiare, giusto?

Io lavoro in un ambiente in cui molti sviluppatori condividono un proxy HTTP comuni e questo comportamento significa che gli sviluppatori non beneficiano di caching. E, abbiamo dependencyManagement su tutte le nostre dipendenze e non usiamo istantanee o altre versioni che potrebbero cambiare, così sembra che la cache dovrebbe essere al sicuro.

Cosa posso mettere nel mio settings.xml o pom.xml per disabilitare queste intestazioni e permettere al nostro proxy per le risposte di cache e restituirli?

È stato utile?

Soluzione

  

Questo sembra essere il comportamento documentato. Il carro Maven default per HTTP (vale a dire, il client "leggero") non sembra consentire la disattivazione queste intestazioni.

In realtà, è possono configure leggero HTTP Wagon client utilizzando i setter disponibili, per esempio (Maven 2.0 +):

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

O anche escludere o fornire ulteriori intestazioni 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>

Questo è ben coperto da Brett Porter nel Configurazione Maven HTTP Connessioni .

  

Perché è Maven configurato in questo modo per impostazione predefinita?

supposizione: si tratta di un difetto di sicurezza per evitare problemi con i proxy mal configurati (non proprio sicuro che questo è vero)

.
  

Cosa posso mettere nel mio settings.xml o pom.xml per disabilitare queste intestazioni e permettere al nostro proxy per le risposte di cache e restituirli?

Le impostazioni di cui sopra vanno nella settings.xml (naturalmente, adattare il id se necessario, central è per il repository predefinito utilizzato da Maven).

Se non lo fa il lavoro (dovrebbe), l'alternativa sarebbe quella di tornare a HTTPClient Wagon e configurarlo come documentato nella Configurazione avanzata del HttpClient HTTP Wagon .

Bibliografia

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top