2017-01-20 2 views
1

В моей компании много проектов 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?

+0

Это действительно несчастливо (и почему [с хранилищем в POM не является хорошей идеей] (http://blog.sonatype.com/2009/02/why-putting-repositories-in-your-poms-is- а-плохо-идея /)). Возможно, вы можете настроить зеркало для 'artifactory' в своих настройках и перенаправить на новый URL-адрес. И подумайте о том, чтобы использовать URL-адрес, который у вас есть, например, частный репо-менеджер по всей стране, чтобы он не повторился во второй раз. – Tunaki

ответ

1

Вы всегда можете добавить зеркало в репозиторий. Способ обработки: here. Вы можете либо добавить его к каждому pom.xml, либо добавить его в settings.xml. Расположение по умолчанию последнего: ~/.m2/settings.xml.

+1

Я никогда не знал, что вы можете разместить репозитории в файле settings.xml! Отлично. – nasukkin

Смежные вопросы