Политика репозитория Release в Nexus гарантирует, что jar никогда не изменится? - PullRequest
1 голос
/ 03 августа 2010

Я в процессе развертывания Nexus OSS в качестве внутреннего хранилища компании.Одним из основных требований является то, что после загрузки jar-файла Nexus (например, при использовании в качестве прокси-сервера Maven Central) он никогда не изменится.Я знаю, что Maven Central имеет эту политику, но я использую другие репозитории, которые не находятся под моим контролем, и я должен подтвердить это требование со своей стороны.

Обеспечивает ли политика выпуска Release репозиторий, что однажды jarзагружен в этот репозиторий, он никогда не изменится?

Существует требование, чтобы мы могли вернуться к версии нашего продукта, созданной 1,5 года назад, и убедиться, что артефакты репозитория, используемые продуктом, одинаковыпри его строительстве сейчас.

1 Ответ

2 голосов
/ 03 августа 2010

Действительно, репозиторий релизов должен строго запрещать изменение контента после релиза, что и делает Maven Central:

2.2.4. Центральное Мавенское Хранилище

(...) Вот некоторые свойств выпуска хранилища, такие как Центральный Maven Репозиторий:

...

Стабильность высвобождения

После публикации в Центральном Maven хранилище, артефакт и метаданные, описывающие этот артефакт никогда не меняется. Это свойство релиза репозитории гарантируют, что проекты которые зависят от релизов будут повторяемый и стабильный во времени. В то время как новые программные артефакты в настоящее время публикуется в центральном каждый день, один раз артефакт назначен на выпуск номер на центральном, там строгий политика против изменения содержимого программного артефакта после выпуск.

При этом, независимо от того, будет ли клиент Maven (пере) загружать артефакт или нет, на самом деле не зависит от хранилища и его политики, это является частью ДНК Maven, и этого просто не произойдет (если вы не удалите указанный артефакт из вашего локального хранилища, конечно). Цитата Бретта Портера в [MNG-2528] - updatePolicy «всегда» не работает для репозиториев с «релизами», по крайней мере, для транзитивных зависимостей :

Релизы в Maven по определению неизменны. Флаг всегда должен проверять наличие новых выпусков (как это выглядит для новых снимков), а не изменений к существующему.

Другими словами, если вы не удалите содержимое своего репозитория Nexus, Nexus никогда не будет повторно загружать выпущенный артефакт снова, и вы сможете восстановить версию своего продукта, созданную два года назад, используя точно такие же библиотеки.

...