我最近设置了一个受密码保护的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>
解决方法:
有案件需要处理:
>发布.如果本地缓存中存在相同版本的发布二进制文件(Maven的〜/ .m2 /存储库缓存或Artifactory的远程存储库缓存),则Maven和Artifactory将永远不会检查更新的二进制文件.强制Artifactory和Maven重新获取发布工件的唯一方法是从缓存中删除它.永远不要为不同的blob使用相同的版本.
>快照.虽然唯一(文件名以时间戳结束)和非唯一(文件名以-SNAPSHOT结尾,因此它们违反我刚写的规则,因此不使用它们)之间存在差异,但它们的检索策略是相同的: Maven认为它们是可过期的资源,它偶尔会检查一个新的blob,在同一个版本下发布. Artifactory也是这样做的:偶尔会将可过期资源声明为“已过期”,因此下次Maven请求此资源时,Artifactory将获取远程存储库以检查在同一版本下发布的新blob.在这两个工具中,您可以控制缓存周期并手动“快速删除缓存”.
>在Maven< update-policy />控制Maven检查新snpashot的频率,并且–update-snapshots标志强制Maven立即检查.
>在Artifactory中,远程存储库配置中的Retrieval Cache Period参数控制Artifactory检查新快照的频率,以及工件浏览器屏幕中远程存储库上的Zap Caches操作,确保Artifactory将在下一个请求中检查新快照.