Maven промежуточный родительский пом - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть проект с несколькими модулями java, где все зависимости управляются родительским pom, <DependencieManager>, как обычно.

80% этих модулей относятся к определенной категории, и у них есть одни и те же зависимости, это означает, что мне нужно дублировать одни и те же разделы зависимостей, плагинов и репозиториев во всех poms этого модуля.

Чтобы избежать такого дублирования, я решил создать промежуточного родителя, который содержит такие разделы, и сделать те модули используют этого промежуточного родителя в качестве своего родителя, создавая модули для «наследования» этих разделов.

Все компилируется и работает нормально ... проблема возникает, когда я пытаюсь создать артефакты. mvn package не создает артефакт из этого промежуточного родителя, поскольку он <packaging>pom</packaging>

Есть ли способ выполнить sh то, что я пытаюсь сделать здесь?

Ответы [ 2 ]

1 голос
/ 27 апреля 2020

Призыв обратиться к здравомыслию:

Родительские POM, которые содержат зависимости, должны содержать только общие зависимости среди дочерних проектов.

В вашем проекте, если у вас есть Подпроекты A и B, которые оба нуждаются в commons-lang, нередко помещают это в родительский проект.

В вашем проекте, если у вас есть подпроекты A и B, и только A требует зависимость PostgreSQL , B абсолютно не должен учитывать это как часть своих зависимостей.

Кажется, проблема связана с тем, как вы структурировали POM. Достаточно Вещи нуждались в похожих зависимостях, поэтому было бы неплохо поместить их в родительский проект, но теперь все становится немного хуже и сложнее в управлении.

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

0 голосов
/ 29 апреля 2020

Оказывается, проблема с наличием промежуточного родительского модуля pom для управления зависимостями была ко времени сборки. Плагин maven-assembly-plugin не позволяет иметь пустой архив.

Решением было исключить артефакты типа pom в файле дескриптора:

(...)
<dependencySets>
    <dependencySet>
        <excludes>
            <exclude>*:pom</exclude>
        </excludes>
    </dependencySet>
</dependencySets>
(...)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...