Artifactory JAR 签名虚拟仓库不缓存本地快照仓库

Artifactory JAR signing virtual repo not caching local snapshot repo

我有一个本地 Artifactory 服务器,其中定义了一堆本地存储库。我已经设置了一个虚拟存储库并将其配置为对通过它检索到的任何 JAR 文件进行签名。

libs-signed 虚拟存储库已连接到 libs-staging-locallibs-snapshot-local,因此您可以从这两个存储库中获取任何 jar,并让它们由我们的证书签名。

如果我通过签名虚拟仓库从暂存仓库获取 JAR,第一次我必须等到签名过程完成,但由于虚拟仓库缓存,此后对同一工件的任何请求都很快.

但是,如果我通过签名虚拟存储库从快照存储库中获取 JAR,我总是会在 JAR 被签名时等待时间(并且我已验证 jarsigner 进程已在服务器上启动每次)。因此,不会缓存源自快照存储库的已签名工件。我已确保在两次提取之间没有添加任何新的快照版本,因此原始(未签名)文件完全相同。

有人知道这是怎么回事吗?如何让虚拟存储库缓存已签名的快照 JAR?

缓存行为取决于非唯一快照的解析方式。
如果快照是通过请求具体的时间戳工件来解析的,那么签名的 .jar 将被缓存,例如:

http://localhost:8081/artifactory/libs-snapshot/org/jfrog/test/multi1/3.5-SNAPSHOT/multi1-3.5-20170105.183200-4.jar

但是,如果通过请求解析快照 - 签名的 .jar 将不会被缓存,例如:

http://localhost:8081/artifactory/libs-snapshot/org/jfrog/test/multi1/3.5-SNAPSHOT/multi1-3.5-SNAPSHOT.jar

原因是针对此类请求的 returned 工件可能会更改,并且通过缓存它,Artifactory 可能 return 一个错误的工件。