IntelliJ/Maven 不从 Artifactory 更新工件

IntelliJ/Maven not updating artifacts from Artifactory

我最近设置了一个密码保护的 Artifactory 服务器。 Jenkins 服务器正在将我的工件部署到该 Artifactory 服务器上的 Maven 存储库。

这是问题所在:
新构建在运行时(在 IntelliJ 中)既不在 Maven 中(构建时)也不可用。为了让 Maven 更新,我必须从我的本地存储库中删除工件。

如何让 Maven/IntelliJ 始终检查最新版本?
即使那样也没有做任何事情:

<releases>
    <enabled>true</enabled>
    <updatePolicy>always</updatePolicy>
</releases>
<snapshots>
    <enabled>true</enabled>
    <updatePolicy>always</updatePolicy>
</snapshots>

处理的案例有:

  1. 发布。如果本地缓存中存在相同版本的发布二进制文件(~/.m2/Maven 的存储库缓存或 Artifactory 的远程存储库缓存),Maven 和 Artifactory 都不会检查更新的二进制文件。 强制 Artifactory 和 Maven 重新获取发布工件的唯一方法是将其从缓存中删除。永远不要对不同的 blob 使用相同的版本。
  2. 快照。虽然唯一(文件名以时间戳结尾)和非唯一(文件名以-SNAPSHOT结尾,因此它们违反了我刚刚写的规则,所以不要使用它们)之间存在差异,但它们的检索策略是同样的:Maven 认为它们 过期资源 ,它会偶尔检查一个新的 blob,发布在同一版本下。 Artifactory 做同样的事情:偶尔会声明过期资源 "expired",因此下次 Maven 请求此资源时,Artifactory 将提取到远程存储库以检查是否有新的 blob,发布在同一版本下。在这两种工具中,您都可以手动控制缓存期和 "zap the cache"。
    • 在 Maven 中 <update-policy/> 控制 Maven 检查新快照的频率,--update-snapshots 标志强制 Maven 立即检查。
    • 在 Artifactory 中,远程存储库配置中的 Retrieval Cache Period 参数控制 Artifactory 检查新快照的频率,并且在工件浏览器屏幕中对远程存储库的 Zap Caches 操作确保 Artifactory 将检查用于下一次请求的新快照。