我的公司有很多Java项目,它们使用maven作为主要的依赖管理工具。我们编写了许多自己的依赖项(与我公司的需求相关的通用功能库),然后需要将它们托管在maven存储库中,以便我们的应用程序可以将它们作为依赖项下载。然而,我们自己的依赖关系并没有暴露给世界;我们希望成为唯一可以访问这些工件的人,因此我们将我们的工件托管在私人存储库中。
例如,我们的POM通常具有以下repository
块:
<repository>
<id>artifactory</id>
<!-- Note: not a real maven repo... :P -->
<url>http://initech.artifactoryonline.com/initech/repo/</url>
<snapshots>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
因此,ArtifactoryOnline.com今天托管了我们所有的私有依赖项。哦,我们使用git作为我们的vcs,所以这个repository
块从一开始就在pom.xml中。
问题在于:ArtifactoryOnline.com将在几个月后消失(取而代之的是JFrog.io),我公司无法做出任何影响该决定的事情。 ArtifactoryOnline.com的所有者发布了一份声明,表示尝试从已弃用的主机获取资源将在一段时间后失败。
这对我们来说是一个问题。我们在十几个依赖于这个已弃用的存储库的项目中提交了数万个提交。这些提交都经过严格的质量保证流程,代表我公司代表了十多年的辛勤工作。然而,一旦发生这种变化并且已弃用的主机脱机,所有那些在一个点上工作的构建将由于缺少依赖链接而突然中断。任何想要使用我们的应用程序代码的旧版本的人都需要创建一个新的分支并重新编写存储库标记!这对我们来说是个大问题。 (如果你需要将一个旧的bug隔离开来,主就会怜悯。)
我们应该/应该如何处理?有没有办法在我们项目的过去深度修改pom,以便替换存储库对我们的git repos的完整时间线可见?
答案 0 :(得分:1)
您始终可以将镜像添加到存储库。
它的处理方式here。您可以将其添加到每个pom.xml
或将其添加到settings.xml
。后者的默认位置是~/.m2/settings.xml
。