首页 文章

IntelliJ / Maven不会更新Artifactory中的工件

提问于
浏览
4

我最近设置了一个受密码保护的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 回答

  • 2

    有案件需要处理:

    • 发布 . 如果本地缓存中存在相同版本的发布二进制文件(Maven的 ~/.m2/ 存储库缓存或Artifactory的远程存储库缓存),则Maven和Artifactory将永远不会检查更新的二进制文件 . The only way to force Artifactory and Maven to re-fetch a release artifact is to delete it from the cache . 永远不要为不同的blob使用相同的版本 .

    • 快照 . 虽然唯一(文件名以时间戳结束)和非唯一(文件名以 -SNAPSHOT 结尾,因此它们违反我刚写的规则,因此不使用它们)之间存在差异,但它们的检索策略是相同的:Maven考虑到它们是可过期的资源,它偶尔会检查一个新的blob,在同一个版本下发布 . Artifactory也是如此:偶尔会将可过期资源声明为"expired",因此下次Maven请求此资源时,Artifactory将获取远程存储库以检查在同一版本下发布的新blob . 在这两个工具中,您可以手动控制缓存周期和"zap the cache" .

    • 在Maven中 <update-policy/> 控制Maven检查新snpashot的频率, --update-snapshots 标志强制Maven立即检查 .

    • 在Artifactory中,远程存储库配置中的 Retrieval Cache Period 参数控制Artifactory检查新快照的频率,以及工件浏览器屏幕中远程存储库上的 Zap Caches 操作确保Artifactory将在下一个请求中检查新快照 .

相关问题