【问题标题】:IntelliJ/Maven not updating artifacts from ArtifactoryIntelliJ/Maven 没有从 Artifactory 更新工件
【发布时间】:2016-07-04 10:56:12
【问题描述】:

我最近设置了一个受密码保护的 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 两者,我还将 Artifactory 的“Maven 快照版本行为”设置为“非唯一”。
  • 请提供工件示例。我们需要工件的名称。
  • @JBaruch "Networking-1.0-SNAPSHOT.jar" 例如。

标签: java maven intellij-idea jenkins artifactory


【解决方案1】:

有几种情况需要处理:

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

【讨论】:

  • 我不知道快照/发布行为。谢谢你:)
猜你喜欢
  • 2015-10-28
  • 2015-10-14
  • 1970-01-01
  • 1970-01-01
  • 2016-02-16
  • 1970-01-01
  • 1970-01-01
  • 2019-12-28
  • 1970-01-01
相关资源
最近更新 更多