Java IntelliJ/Maven不从Artifactory更新工件

Java IntelliJ/Maven不从Artifactory更新工件,java,maven,intellij-idea,jenkins,artifactory,Java,Maven,Intellij Idea,Jenkins,Artifactory,我最近设置了一个密码保护的Artifactory服务器。Jenkins服务器正在将我的工件部署到该工件服务器上的maven存储库中 问题是: 新的构建在运行时(IntelliJ)和Maven(构建时)都不可用。为了让maven更新,我必须从本地repo中删除工件 如何让Maven/IntelliJ始终检查最新版本? 即使这样也没什么用: <releases> <enabled>true</enabled> <updatePolicy>

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

问题是:
新的构建在运行时(IntelliJ)和Maven(构建时)都不可用。为了让maven更新,我必须从本地repo中删除工件

如何让Maven/IntelliJ始终检查最新版本?
即使这样也没什么用:

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

真的
总是
真的
总是

需要处理的案例有:

  • 释放。如果本地缓存中存在相同版本的发布二进制文件(
    ~/.m2/
    Maven的存储库缓存或Artifactory的远程存储库缓存),Not Maven或Artifactory将永远不会检查较新的二进制文件强制Artifactory和Maven重新获取发布工件的唯一方法是将其从缓存中删除。永远不要对不同的blob使用相同的版本
  • 快照。虽然唯一的(文件名与时间戳结束)和非唯一性(文件名结束与<代码>快照< /代码>,因此它们违反了我刚才写的规则,所以不要使用它们),它们的检索策略是相同的:Maven考虑它们可用的资源,它偶尔会检查一个新的BLUB,在同一版本下发布。Artifactory也会这样做:有时可过期的资源会声明为“expired”,所以下次Maven请求此资源时,Artifactory将提取到远程存储库以检查在同一版本下发布的新blob。在这两种工具中,您都可以控制缓存周期并手动“清除缓存”。
    • 在Maven中,控制Maven检查新snpashot的频率,
      --updatesnapshots
      标志强制Maven立即检查
    • 在Artifactory中,远程存储库配置中的
      检索缓存周期
      参数控制Artifactory检查新快照的频率,并且ArtifactBrowser屏幕中远程存储库上的
      Zap缓存
      操作确保Artifactory将在下一个请求时检查新快照

  • 请提供您部署的示例或工件。它们是您覆盖的快照还是发布版本?@JBaruch两者都是,我还将Artifactory的“Maven快照版本行为”设置为“非唯一”。请提供工件的示例。我们需要工件的名称。@JBaruch“Networking-1.0-Snapshot.jar”例如。我不知道快照/发布行为。谢谢:)