Вопрос по java, repository – Советы по ведению внутреннего репозитория Maven?

29

Я заинтересован в поддержанииспециалист 2 репозитория для моей организации. Каковы некоторые из указателей и подводных камней, которые могли бы помочь.

Каким руководствам пользователи должны следовать при настройке стандартов для загрузки или публикации собственных артефактов в хранилище при выпуске своего кода? Какие виды управления / правила у вас есть для этого типа вещей? Что вы включаете в руководство / документацию вашего разработчика?

UPDATEМы подняли Nexus и были очень довольны им - следовали большинству рекомендаций Сэла и не имели никаких проблем. Кроме того, мы ограничили доступ к развертыванию и автоматическую сборку / развертывание артефактов моментальных снимков через сервер Hudson CI. Hudson может проанализировать все зависимости проекта в восходящем / нисходящем направлении, поэтому, если из-за проблемы компиляции, сбоя теста или какого-либо другого нарушения сборка будет прервана, развертывание не произойдет. Будьте осторожны с развертыванием моментальных снимков в Maven2 / Maven3, так как метаданные изменились между двумя версиями. «Только Гудзон» Стратегия развертывания снимка уменьшит это. Мы не используем Release Plugin, но написали некоторые слесарные работы вокругПлагин версий когда собираюсь переместить снимок в релиз. Мы также используем m2eclipse, и он, похоже, очень хорошо работает с Nexus, поскольку из файла настроек он может видеть Nexus и знает, как индексировать информацию об артефактах для поиска оттуда. (Хотя мне пришлось настроить некоторые из этих параметров, чтобы они полностью индексировали наши внутренние снимки.) Я также рекомендую развернуть исходную флягу с вашими артефактами в качестве стандартной практики, если вы заинтересованы в этом. Мы настраиваем это в супер POM.

UPDATE2: Я сталкивалсяэто Sonatype технический документ в котором подробно описываются различные этапы принятия / погашения, каждый с разными целями использования для менеджера репозитория Maven.

Ваш Ответ

7   ответов
4
Error: User Rate Limit Exceeded cwash
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
3

это очевидно, но для воспроизводимости разработчики никогда не должны перезаписывать артефакты, они должны быть новыми версиями.

Это также относится к вышестоящим репозиториям. Если вы загружаете Apache-commons версии 1.2.3, вам никогда не следует загружать его снова. Исправления приходят из последних версий, не применяются к существующим версиям.

Error: User Rate Limit Exceeded cwash
28

репозиториями. Я бы не рекомендовал артефакт. Бесплатная версия Nexus отлично подходит для разработчиков менее 20 в менее чем трех группах. Если у вас больше пользователей, чем это, сделайте себе одолжение и заплатите за выпуск Sonatype. Интеграция с LDAP окупается.

Internal Release Internal Snapshot Internal 3rd Party for code used in house that comes from outside sources, or for endorsed 3rd party versions. Put the JDBC drivers, javax.* stuff and stuff from clients and partners here. External Proxies common proxy for all the usual sources like m2, codehaus etc

Настройте Nexus, чтобы сделать следующее для внутренних репозиториев

Delete old Snapshots on regular intervals Delete Snapshots on release Build index files. This speeds up local builds too

Have a common settings.xml file that uses these four and only these four sources. Если вам нужно настроить дальше, попробуйте сохранитьcommon part файла настроек и использованияprofiles for the differences. Не позволяйте вашим клиентам просто свернуть свои собственные настройки, иначе вы получите код, который создается на одной машине, но не на любой другой машине.

Provide a common proxy for your clients. В Nexus вы можете добавить несколько прокси к общим источникам Maven (Apache, JBoss, Codehaus) и иметь один прокси, доступный для внутренних клиентов. Это значительно упрощает добавление и удаление источников из ваших клиентов.

Don't mix Internal and 3rd party artifacts в том же хранилище. Nexus позволяет добавлять файлы JAR во внутренний репозиторий через веб-интерфейс. Я рекомендую это как способ добавления ваших драйверов JDBC и другого внешнего кода третьим лицам. Пользовательский интерфейс довольно приятен в использовании по сравнению с большинствомenterprise software.

Define a common parent POM который определяет Внутренний снимок и релиз репозитория черезdistributionManagement тег. Я знаю, что многие люди говорят вам не делать этого. И хотя я свободно признаю, что с этим возникают всевозможные проблемы, все будет хорошо, если клиенты будут создавать только выпуски и снимки для развертывания в одном внутреннем репозитории.

If you have an existing mis-managed Maven repositoryсоздать 5-й репозиторий под названиемLegacy и поместите все репозитории туда. Установите задачу cron для удаления старых файлов из старых, когда им исполнился год. Это дает всем год, чтобы уйти от этого и обновить свои poms.

Establish an easy to stick to naming convention for internal artifacts. Я предпочитаю GroupID изDepartment.Function.Project и ArtifactId для этогоcomponentName, Для внутренних репозиториев, com / org / net и название компании, скорее всего, не будут иметь значения. И неправильно, если компания меняет название. Гораздо менее вероятно, что отдел продаж, бухгалтерии или инвентаря будет переименован.

Error: User Rate Limit Exceeded cwash
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededblog.sonatype.com/people/2010/04/…
7

нексус, :П

Я использовал и Nexus, и Artifactory. Интерфейс для Nexus намного более надежен, он гораздо более настраиваем и, конечно, написанSonatype, который хорошо знает все, что Maven хорошо.

При этом, Artifactory является достойным и работоспособным.

A review of Nexus vs. Artifactory Oh my! Of course, here's a SO quesiton about the matter. Sonatype does a feature comparison jFrog (maker of Artifactory) does a feature comparison
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded cwash
Error: User Rate Limit Exceeded cwash
Error: User Rate Limit Exceeded
4

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

Вот некоторые вещи, которые мне очень нравятся в Artifactory (имейте в виду, что в Nexus могут быть и эти функции):

Nice Web 2.0 interface. The ability to import your local Maven repository to help get you started. Ease of integration with existing LDAP servers for security (I'm a big fan of a single repository for storing credentials).

Учитывая, что на самом деле есть только две основные реализации репозитория Maven, если вы действительно хотите убедиться, что вы сделали правильный выбор, я рекомендую попробовать оба варианта и решить для себя, что вам больше нравится.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded cwash
3

КакORIGINAL QUESTION (технические вопросы, которые необходимо учитывать при создании хранилища M2), я бы рекомендовал создать пользователя только для чтения для просмотра хранилища и администратора для каждого администратора (при этом один пользователь только для чтения для всех тех пользователей, которые не являются администраторами). Более того, я бы рекомендовал периодически создавать резервные образы (возможно, один раз в день?). Очень важно, если ваш репозиторий большой или вы время от времени устанавливаете собственные артефакты.

И последнее, но не менее важное: при добавлении новых удаленных репозиториев вы должны добавить фильтры включения / исключения, чтобы поиск артефактов в репозитории выполнялся быстрее.

Есть много других проблем, которые необходимо рассмотреть, но это основные проблемы, с которыми я столкнулся при управлении внутренним хранилищем Maven.

Для записи я использую как Nexus, так и Artifactory; Я могу четко заявить, что, хотя Nexus очень прост и работает (хотя у меня иногда возникают проблемы с процессом установки в Ubuntu), его бесплатная версия не может конкурировать с бесплатной версией сообщества Artifactory. Исключая удивительный веб-интерфейс Artifactory Web 2, его основные функции, такие как управление безопасностью, периодическое резервное копирование и проблемы доступности, намного превосходят возможности Nexus.

3
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededsonatype.com/people/2009/07/…

Похожие вопросы