Как мне показать иерархию Maven POM? - PullRequest
23 голосов
/ 03 февраля 2012

Я делаю некоторые сценарии, и мне нужно получить список всех родительских помпов для каждого данного помпона. Плагин зависимостей, похоже, интересуется только зависимостями, перечисленными в разделе зависимостей pom, но, похоже, нет способа показать родительские poms, которые также необходимы для работы Maven.

Мне не хватает чего-то простого?

Ответы [ 2 ]

23 голосов
/ 09 февраля 2012

Нет простой команды Maven, которая покажет вам цепочку родительских POM для pom.xml.Причина этого в том, что это не обычный вопрос, который обычно задают (подробнее об этом ниже).Для вашего сценария вам просто нужно проанализировать файл pom.xml, получить координаты родительского артефакта, получить файл pom.xml артефакта, а затем проанализировать его файл pom.xml (и повторить).Извините, но я не знаю кратчайшего пути, но другие люди решили подобные проблемы .

Вы правы в том, что технически родительский pom является зависимостью отваш проект, но он не является буквальной зависимостью Maven и обрабатывается совершенно по-другому.Цепочка родительских помп, наряду с активными профилями, ваш файл settings.xml и суперпом Maven из установочного каталога, объединены вместе, чтобы создать эффективный помп вашего проекта .Эффективный POM - это то, что Maven действительно использует для своей работы.Таким образом, по сути, цепочка наследования родительского pom уже разрешена и объединена до того, как плагин зависимостей (или любой другой плагин) даже активируется.

Вопросы, которые обычно задают большинство людей: «Что делает мой REAL pom.xml * 1012?* действительно как выглядит, когда Мейвен объединяет все?или "Каков результат моей цепочки наследования родительских помпонов?"или "Как активный профиль влияет на мои свойства pom.xml?"Эффективный pom расскажет вам все это.

Я знаю, что вы не спрашивали, но для других, читающих это, если вы хотите увидеть свой родительский pom.xml, просто откройте pom.xml вРедактор M2Eclipse POM и нажмите на ссылку родительского артефакта на вкладке обзора.Таким образом, вы можете быстро перемещаться вверх по цепочке файлов pom.xml всего одним щелчком мыши на pom.Это был бы странный проект, у которого было более 3 или 4 родительских pom наследования.

Если вы хотите увидеть свой эффективный pom, вы можете запустить команду mvn help:effective-pom.Кроме того, вы можете нажать на вкладку «Эффективное POM» в редакторе POM M2Eclipse.

8 голосов
/ 20 сентября 2016

Базовое решение

mvn org.apache.maven.plugins:maven-dependency-plugin:3.1:display-ancestors

Если ваш проект определяет версию 3.1 или новее, вы можете использовать:

mvn dependency:display-ancestors

Вывод выглядит примерно так:

[INFO] Ancestor POMs: org.springframework.boot:spring-boot-starter-parent:1.4.0.RELEASE <- org.springframework.boot:spring-boot-dependencies:1.4.0.RELEASE

Улучшенное решение

Иерархический плагин maven (который я написал) может отображать дополнительную информацию об импортированных помпах, например:

[INFO] Displaying hierarchy. Set level=full to display dependencies in dependencyManagement
[INFO]  PARENT org.springframework.boot:spring-boot-samples:1.4.1.BUILD-SNAPSHOT
[INFO]    PARENT org.springframework.boot:spring-boot-starter-parent:1.4.1.BUILD-SNAPSHOT
[INFO]      PARENT org.springframework.boot:spring-boot-dependencies:1.4.1.BUILD-SNAPSHOT
[INFO]        IMPORT org.springframework:spring-framework-bom:4.3.3.BUILD-SNAPSHOT
[INFO]        IMPORT org.springframework.data:spring-data-releasetrain:Hopper-BUILD-SNAPSHOT
[INFO]          PARENT org.springframework.data.build:spring-data-build:1.8.4.BUILD-SNAPSHOT
[INFO]        IMPORT org.springframework.integration:spring-integration-bom:4.3.1.RELEASE
[INFO]        IMPORT org.springframework.security:spring-security-bom:4.1.3.RELEASE

Подробности здесь: https://github.com/ExampleDriven/hierarchy-maven-plugin

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...