Подтвердить что ты не робот

Как показать иерархию PAN Maven?

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

Я пропустил что-то основное?

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

Основное решение

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

требуется для версии 2.9+ плагина зависимостей. Если ваш плагин старше и по какой-либо причине вы не можете обновить его, нажмите:

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

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

Иерархия-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