У меня проблемы с проектированием архитектуры нескольких репозиториев Maven.
Мы поддерживаем инфраструктуру для нашей собственной компании и пары клиентов.У нас есть внутренние компоненты компании , распространяемые компоненты и специфичные для клиента компоненты .У нас также есть корпоративное репозиторий SCM / CI / Nexus, а также для каждого клиента репозиторий SCM / CI / Nexus.
Теперь самое сложное: мыхотел бы, чтобы распространяемые компоненты были развернуты как в репозитории нашей компании, так и в клиентских репозиториях, когда мы выпускаем или внедряем (потому что компоненты клиента зависят от распространяемых компонентов).Однако необходимо, чтобы клиенты не видели конфигурации репозитория друг друга (или нашу конфигурацию внутреннего репо) в распространяемом коде.Это означает, что распространяемый pom.xml может не содержать определения этих репозиториев, в противном случае каждый клиент может увидеть все в исходном коде.Кроме того, запросы на загрузку внутренних артефактов или клиентских компонентов не следует отправлять по всем направлениям, в противном случае каждый клиент может увидеть запросы в журналах Nexus своего репозитория.
Как этого достичь?
Я знаю, что существует обходной путь, когда distributionManagement вообще не указан в pom.xml, и я могу использовать -DaltDeploymentRepository
из командной строки, но я не хочу вводить URL-адреса каждый раз, когда я развертываю.Есть ли лучший способ?
Краткое резюме:
Внутреннее репо компании
- внутренние компоненты
- распространяемые компоненты
Клиент 1 репо
- распространяемые компоненты
- клиент 1 приложение
Клиент 2 репо
- распространяемые компоненты
- клиентское приложение 2
Распространяемые компоненты должны быть развернуты во всех репозиториях после выпуска.Клиенты не должны видеть конфигурацию репо для других или внутренних клиентов.