#java #maven #maven-3
#java #maven #maven-3
Вопрос:
Мне было любопытно, как решить, будет ли наш элемент в дочернем 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 каждый раз и его проверки?
Комментарии:
1. Как
<version>
можно объединить?2. @JFMeier Дочерний pom принимает
<version>
родительский pom, когда он не определен. Итак, я думаю, что это то, что документ говорит о слиянии?3. Нет, слияние означает, что информация родительского POM не перезаписывается, а объединяется с информацией в дочернем POM. Например: вы можете определить различные зависимости в родительском POM и дополнительные зависимости в дочернем POM, но
<dependencies>
элемент дочернего POM не перезаписывает один из родительского POM, но элементы обоих берутся, т. Е. объединяются.4. Thnx отредактировал вопрос
5. Почему вы исключили ссылку на «список слияния» из своего вопроса?