【问题标题】:How to handle Azure Devops 500 MB file size limit (Maven Packages)?如何处理 Azure Devops 500 MB 文件大小限制(Maven 包)?
【发布时间】:2021-05-14 11:43:01
【问题描述】:

我有一个 2 GB 的 zip,现在作为 Maven 工件在 Nexus 中维护:

<dependency>
  <groupId>groupId</groupId>
  <artifactId>artifactId</artifactId>
  <version>1.0.0</version>
  <type>pom</type>
</dependency>

这个 zip 在构建时由 gradle 获取:

dependencies {
    packageName("groupId:artifactId:1.0.0@ZIP")
}

现在应该将 zip 移动到 Azure devops,但是当我尝试将它推送到那里时 作为 Maven 工件,我收到了关于大小的错误。 java.lang.IllegalArgumentException:进度文件大小不能大于大小:2735210496 > 1974413494 如果我尝试推动较小尺寸的拉链,它会按预期工作。 我用来将其作为 Maven 工件推送的命令是:

mvn deploy:deploy-file -Dpackaging="zip" -DrepositoryId="azureFeed" -Durl="azuremavenRepoURL" -DgroupId="groupId" -DartifactId="artifactId" -Dversion="1.0.0" -Dfile="PathTo2GBFile\FileName.ZIP"

经过调查,我发现文档中提到了 maven 包大小限制:https://docs.microsoft.com/en-us/azure/devops/artifacts/reference/limits?view=azure-devops

我的 zip 大于 500 MB,如何在 Azure Devops 中将其推送为 Maven 工件? 将 2GB zip 推送到 Azure Devops 以便 Gradle 轻松获取它的最简单方法是什么(就像现在使用 Nexus 一样)?

PS:我已经尝试并成功地将 2GB zip 作为通用包推送(使用 az CLI),但在这种情况下,我无法在 gradle 中获取 zip。 不仅如此,据我所知,在 Azure Devops 中还无法通过 API 获取通用包:https://developercommunity.visualstudio.com/idea/495533/download-universal-package-trough-api.htmlAzure Artifacts - Download a specific version of Universal artifact

【问题讨论】:

  • 那是什么神器? 2 GB 大小?根据给定的 maven 剪断这很奇怪......
  • 这么大的神器是怎么制作出来的?
  • 我刚刚在问题中添加了我用来尝试生成我的工件并将其推送到 Azure 的 mvn 命令
  • zip 包含构建项目的平台(这就是它如此之大的原因)。我并不认为将其保留为 Maven 工件有点奇怪。但我想像这样在 Nexus 上存储它使得通过 Gradle 获取非常容易,因为获取任何其他 maven 依赖项......如果这可以以任何其他方式存储在 Azure Artifacts 上,我可以接受,只要 Gradle 可以以某种方式获取......

标签: maven gradle azure-devops azure-artifacts


【解决方案1】:

如何处理 Azure Devops 500 MB 文件大小限制(Maven 包)?

众所周知,每个文件的 Maven 包大小限制为 500MB,而且目前还没有 REST API 来下载通用包。

我们只能使用Azure CLI 来下载包。 Azure DevOps 不支持直接 HTTP/HTTPS 下载链接或其他方式下载包:

az artifacts universal download --organization https://dev.azure.com/fabrikam --feed FabrikamFiber --name my-first-package --version 1.0.0 --path .

您可以查看此文档Download a Universal Package 了解更多详细信息。

【讨论】:

  • 感谢您的回答!我不知道 Gradle 下载任务...但由于 Azure DevOps 不支持直接 HTTP/HTTPS 下载链接,我想我无法使用 Gradle 下载任务下载我的通用包,对吧?
  • @dj_frunza,是的,你是对的!这个建议确实不合适,我将从我的答案中删除它。那么,如何使用 Azure CLI 下载包?可以下载包,但我不能100%确定是否适合你的情况。
  • 我需要下载来轻松地在多台机器(具有不同的操作系统)上自动工作。使用 Gradle 作为 Maven 依赖项从 Azure 获取它只需要一个安全令牌,这就是我想这样做的原因。我认为 Azure CLI 比较麻烦,因为它意味着将它安装在所有机器上,除此之外,Azure CLI 还需要用户和密码才能登录,我想避免在多个系统上维护大量密码
  • @dj_frunza,根据你的描述,Gradle 更适合你。但是我对Gradle的了解还不够,还没有遇到可以处理Universal Package的Gradle。这将是一个障碍
  • 好的,没问题,感谢您迄今为止对我的支持
猜你喜欢
  • 1970-01-01
  • 2018-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-29
  • 1970-01-01
  • 2020-02-05
  • 2022-08-18
相关资源
最近更新 更多