Представьте, что у вас есть специфическая для среды конструкция, которая возникает в двух путях: дома и офиса. Конкретный артефакт вашей сборки зависит от некоторого общего артефакта, позволяет называть его «ядром». Это просто общая функциональность для сборки для дома и офиса. Домашний артефакт зависит от Core, а артефакт Office зависит от Core. Фактически, Home и Office могут быть одним и тем же артефактом, который просто создается под разными профилями Maven: в случае, если мы называем Maven с -pHomeBundle, он создает артефакт в одну сторону, в случае с -pOfficeBundle - он создает его для офиса, Ядро как зависимость, такая же, как и для дома.Maven: специфическая зависимость связки
Пока все хорошо.
Теперь возникает вопрос: что мы можем сделать, если основной артефакт, который является общим для комплектов для дома и офиса, имеет зависимости от других артефактов, которые РАЗЛИЧНЫ для комплектов для дома и офиса? То есть Основной артефакт не зависит от пакета, но его зависимости.
Как мы можем обеспечить наше Ядро этими зависимостями?
Как мы можем написать Core POM для этого?
ОБНОВЛЕНИЕ Для решения этой проблемы были предложены два решения: добавьте две связанные с комплектом зависимостей к проекту Core (как показано ниже), а затем добавьте один реальный объект в модуле «Главная/Офис», который принимает Core как зависимость) или добавьте две реальные зависимости от модуля Core, а затем отфильтровать их в модуле, связанном с пакетом Home/Office. Но я не могу получить, с какой зависимостью Core будет строить. Независимо от того, предоставляем ли мы это или нет, он должен строиться с некоторой зависимостью, потому что он поступает в репозиторий. Насколько я понимаю, он просто возьмет первый доступный класс и использует его. Поэтому у меня будет артефакт Core, построенный с использованием одной из зависимостей.
Не можете ли вы добавить обе зависимости, как указано в Core pom.xml ... и добавить определенную зависимость для дома или офиса в своих файлах pom? поэтому файл домашней pom имеет зависимость от артефакта, который Office не имеет. – fmodos
Помните о предостережениях при использовании профилей таким образом: [Создание для разных сред с Maven 2, Caveats] (https://maven.apache.org/ направляющая/мини/руководство потенциал в обмен на другой-environments.html # предостережений). –
fmodos, вопрос в том, как Maven может построить Core, если Core зависит от того, что неизвестно в момент создания (в тот момент, когда мы строим ядро, мы не знаем, какой пакет - Home или Office - мы будем строить после него). Похоже, это невозможно. – MiamiBeach