В моей компании много проектов Java, которые используют maven в качестве основного инструмента управления зависимостями. Мы пишем ряд наших зависимостей (общих библиотек функций, соответствующих потребностям моей компании), которые затем должны размещаться в репозитории maven, чтобы наши приложения могли загружать их как зависимость. Однако наши собственные зависимости не подвержены миру; мы хотим быть единственными, кто имеет доступ к этим артефактам, и поэтому мы размещаем наши артефакты в частных репозиториях.Как я могу управлять устаревшим хранилищем maven в git?
Например, наш РОМ обычно имеет следующий 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 опубликовали заявление о том, что попытки извлечь ресурсы из их устаревшего хоста не удастся с этого момента.
Это проблема для нас. У нас есть десятки тысяч транзакций по десяткам проектов, которые зависят от этого устаревшего репозитория. Эти коммиты прошли через строгий процесс контроля качества и представляют собой более десяти лет напряженной работы от имени моей компании. Тем не менее, как только это изменение происходит, и устаревший хост переходит в автономный режим, все те сборки, которые в какой-то момент работали, внезапно прерываются из-за отсутствия ссылок на зависимостей. Любой, кто хочет использовать старую сборку нашего кода приложения, должен будет создать новую ветку и переписать тег репозитория! Это большая проблема для нас. (Господь помилован, если вам нужно делить пополам, чтобы изолировать старый баг.)
Как мы можем это сделать? Есть ли способ ретроактивно модифицировать поместья в прошлом в наших проектах, так что репозиторий замещения отображается в полной временной строке наших репозиториев git?
Это действительно несчастливо (и почему [с хранилищем в POM не является хорошей идеей] (http://blog.sonatype.com/2009/02/why-putting-repositories-in-your-poms-is- а-плохо-идея /)). Возможно, вы можете настроить зеркало для 'artifactory' в своих настройках и перенаправить на новый URL-адрес. И подумайте о том, чтобы использовать URL-адрес, который у вас есть, например, частный репо-менеджер по всей стране, чтобы он не повторился во второй раз. – Tunaki