Что представляет собой родительский тег в Maven pom?

E.g.:

<parent>
    <groupId>mycompany.trade.com</groupId>
    <artifactId>mycompany.trade.</artifactId>
    <version>1.1.1.0-SNAPSHOT</version>
</parent>

Означает ли это, что Maven будет искать родительский pom? Если да, то где, в каком порядке? Может быть в папке выше на 1 уровень? Или в локальном репозитории или в репо?


person user710818    schedule 06.11.2011    source источник


Ответы (3)


Да, maven считывает родительский POM из вашего локального репозитория (или прокси-серверов, таких как nexus) и создает «эффективный POM», объединяя информацию из родитель и модуль POM.

См. также Введение в POM.

Одна из причин использования родителя заключается в том, что у вас есть центральное место для хранения информации о версиях артефактов, настройках компилятора и т. д., которые должны использоваться во всех модулях.

person stacker    schedule 06.11.2011

Общие зависимости, свойства, константы и т. д. можно определить в центральном родительском проекте pom.xml.

Главное, что родительский проект нельзя распространять, и он больше похож на обычный pom.xml, за исключением тега packaging.

    <groupId>com.company.demo</groupId>
    <artifactId>MavenInheritance</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>

Ребенок теперь может наследовать это, используя

   <parent>
        <groupId>com.company.demo</groupId>
        <artifactId>MavenInheritance</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
person Vino    schedule 06.10.2017

Как следует из названия, мы можем указать файл parent pom.xml вместо файла current pom.xml. При этом зависимости, свойства, константы и многое другое, определенные в родительском файле pom.xml, также объединяются с текущим файлом pom.xml (дочерним pom.xml). Допустим, у вас есть родительский тег в ваших проектах pom.xml, который выглядит следующим образом:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.8.RELEASE</version>
</parent>

Затем maven считывает этот родительский POM из вашего локального репозитория (или из менеджеров репозиториев, таких как sonatype, jfrog и т. д., которые вы настроили) и создает Resultant POM, комбинируя родительский POM и POM вашего модуля.

Чтобы увидеть объединенный результат, используйте следующую команду mvn:

mvn help:effective-pom  
person Ashan Priyadarshana    schedule 12.09.2019
comment
Что означают теги в теге parent? - person mazend; 01.02.2021