如何将 Maven 包从 Nexus 迁移到 Azure Artifacts

How to migrate Maven packages from Nexus to Azure Artifacts

我正在尝试将我的构建包从我们的本地 Nexus Repository Manager 迁移到 Azure Artifacts。我发现这个 Microsoft link 解释了如何使用 Powershell 脚本为 NuGet(.NET 程序包管理器)执行此操作,但是 Maven 没有这样的工具。

我正在考虑使用 "maven clean compile" 检索所有构建文件,然后将我的 pom.xml 文件指向 Azure Artifacts,然后以某种方式推送它们。但是,包的数量运行进了100k而且有很多应用程序在使用它。因此,这感觉是一种非常笨拙的处理方式,需要付出大量努力并有很大的出错空间。

有人对我有什么建议吗?

原来我的问题主要是我对Artifact repos和项目依赖链的了解有限导致的。显然,Artifact repos 会缓存所有上游 repos,所以这就是为什么那里有 100k 文件的原因。最后只有两个公司特定的依赖项需要移动。

我按照以下方式完成了迁移(适用于所有 Maven 迁移):

克隆链中最高的依赖项。 (可能包含一个带有公共名称或父名称的名称)

将 Azure Artifacts 配置添加到 ${USER_HOME}/.m2/settings.xml 和 pom.xml,如下所述:https://robeco.visualstudio.com/Delivery%20Integration%20Services/_packaging?_a=connect&feed=Maven-feed

从当前 repo 中检索依赖项

mvn install
mvn package

创建发布版本(后面没有 -SNAPSHOT)并将其推送到 Azure Artifacts (否则你会得到一个 Can't release project due to non released dependencies 错误)

mvn release:clean
mvn release:prepare
mvn release:perform

现在您拥有类似于 robeco-common-version1.0.16 版本的内容。现在将其部署到 Azure Artifacts

mvn deploy

您应该会看到类似正在上传到 Maven-feed 的内容:https://robeco.pkgs.visualstudio.com/...

对所有后续的公司特定依赖项执行相同的步骤。