Мне было любопытно, как решить, будет ли наш элемент в дочернем pom переопределять детали родительского pom или просто добавляться вместе с наследуемыми элементами родительского pom в дочернем pom.
Давайте рассмотрим пример, чтобы понять:
Например, каждая зависимость уникально идентифицируется с помощью координат maven.В дочернем pom, если у зависимости есть maven координата, отличная от зависимостей в родительском pom, переопределение не происходит, и родительские зависимости также добавляются в дочерний pom.
Здесь у нас был критерий уникальной идентификации элемента в нашемmaven xml, который помог нам определить, произойдет ли переопределение.
Другой пример:
Давайте рассмотрим еще один пример тега <license>
.Проведя некоторый эксперимент с использованием эффективного pom, я узнал, что <licenses>
наследуются.
<licenses>
<license>
<name>The Apache Software License, Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-3.0.txt</url>
<distribution>repo</distribution>
</license>
</licenses>
Но если я изменю любой из <name>
, <url>
, <distribution>
, произойдет переопределение.
Существуют ли какие-либо четкие правила, когда происходит переопределение и когда это не происходит (а родительские элементы добавляются к дочерним элементам), не генерируя эффективный pom каждый раз и не проверяя его?