Squid不会从sotatype nexus maven存储库中缓存工件

时间:2015-07-30 12:39:05

标签: nexus squid

我试图设置Squid来缓存企业maver存储库的所有请求。最初,我已经成功地与Ivy合作,但现在Squid应该缓存来自Maven引用的Sonatype Nexus存储库的数据。

我的问题是Squid实际上并没有缓存Maven工件。我们正在使用大量的快照依赖项,所以我在每个构建中使用刷新工件元数据,但我不明白,为什么不能自己刷新。

在Squid日志中,我有以下

1438258641.794   7852 127.0.0.1 TCP_CLIENT_REFRESH_MISS/200 8872504 GET http://build.mycompany.com:8081/nexus/content/groups/public/com/mycompany/com.mycompany.platform/5.4-SNAPSHOT/com.mycompany.platform-5.4-20150730.074224-34.jar - HIER_DIRECT/10.10.150.213 application/java-archive

在此之后,我从〜/ .m2 / repository中删除整个工件的目录,在下一次构建期间,我再次看到TCP_CLIENT_REFRESH_MISS用于相同的工件:

1438259631.440   7398 127.0.0.1 TCP_CLIENT_REFRESH_MISS/200 8872504 GET http://build.mycompany.com:8081/nexus/content/groups/public/com/mycompany/com.mycompany.platform/5.4-SNAPSHOT/com.mycompany.platform-5.4-20150730.074224-34.jar - HIER_DIRECT/10.10.150.213 application/java-archive

根据TCP_CLIENT_REFRESH_MISS(以及观察到的工件下载时间)的描述,工件从服务器重新加载,而不是缓存。

1 个答案:

答案 0 :(得分:1)

"这似乎是记录在案的行为。 HTTP的默认Maven旅行车(即"轻量级"客户端)似乎不允许禁用这些标头。 实际上,您可以使用可用的setter来配置Lightweight 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>

来源:Why does Maven disable caching for HTTP requests?