我试图设置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(以及观察到的工件下载时间)的描述,工件从服务器重新加载,而不是缓存。
答案 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>