问题描述
我有一个 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 作为 Maven 工件推送到 Azure Devops 中,因为它大于 500 MB? 将 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.html, Azure Artifacts - Download a specific version of Universal artifact
解决方法
如何处理 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 以了解更多详细信息。