IntelliJ/Maven无法从Artifactory更新构件

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

请提供您部署的示例或工件。它们是快照还是覆盖的发布版本? - JBaruch
@JBaruch,我两个都设置了,同时我将Artifactory的“Maven快照版本行为”设置为“非唯一”。 - Jofkos
请提供一些工件的示例,我们需要这些工件的名称。 - JBaruch
@JBaruch 例如,“Networking-1.0-SNAPSHOT.jar”。 - Jofkos
1个回答

4

需要处理以下情况:

  1. 发布版本。如果本地缓存中存在相同版本的发布二进制文件(Maven使用~/.m2/repository缓存,Artifactory使用远程仓库缓存),那么Maven和Artifactory都不会检查是否存在更新的二进制文件。 强制Artifactory和Maven重新获取发布构件的唯一方法是从缓存中删除它。请勿为不同的Blob使用相同的版本。
  2. 快照版本。虽然独特的快照版本(文件名以时间戳结尾)和非独特的快照版本(文件名以-SNAPSHOT结尾,因此它们违反了我刚才写的规则,请勿使用它们)之间存在差异,但它们的检索策略是相同的:Maven将其视为可过期资源,偶尔会检查是否有新的Blob发布在相同的版本下。Artifactory也是如此:偶尔会将可过期资源声明为“过期”,因此下次Maven请求此资源时,Artifactory将获取远程存储库以检查是否有新的Blob发布在相同的版本下。在这两个工具中,您可以控制缓存期限并手动“清除缓存”。
    • 在Maven中,<update-policy/>控制Maven检查新快照的频率,而--update-snapshots标志会强制Maven立即进行检查。
    • 在Artifactory中,远程存储库配置中的Retrieval Cache Period参数控制Artifactory检查新快照的频率,而位于工件浏览器屏幕上的远程存储库中的Zap Caches操作将确保Artifactory在下一次请求时检查新快照。

1
我不知道快照/发布的行为。谢谢 :) - Jofkos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接