Apache Maven: В чем разница между наследованием, агрегацией и зависимостями? - PullRequest
6 голосов
/ 21 сентября 2011

Я новичок в Maven и пытаюсь понять, почему модули моей компании организованы в «группы модулей», но каждый субмодуль явно объявляет своего родителя. Я не совсем понимаю, что пытается сказать POM Reference о разнице между наследованием и агрегацией .

Например, родительский модуль:

<groupId>example.group</groupId>
<artifactId>util</artifactId>
<packaging>pom</packaging>
<name>Util Parent</name>

<modules>
    <module>util_client</module>
    <module>util_core</module>
    <module>util_server</module>
</modules>

И один из его детей:

<parent>
    <artifactId>util</artifactId>
    <groupId>example.group</groupId>
    <version>trunk-SNAPSHOT</version>
</parent>

<groupId>example.group.util</groupId>
<artifactId>util_core</artifactId>
<packaging>jar</packaging>
<name>Util Core</name>

Зачем объявлять это обоими способами? Это избыточно? Чтобы сделать вещи еще более запутанными, некоторые из подмодулей утилит зависят друг от друга:

<groupId>example.group.util</groupId>
<artifactId>util_client</artifactId>
<packaging>jar</packaging>
<name>Util Client</name>

<dependencies>
    <dependency>
        <groupId>example.group.util</groupId>
        <artifactId>util_core</artifactId>
    </dependency>
</dependencies>

Извините, если это глупый вопрос, но вау, это сбивает с толку! Спасибо за вашу помощь.

1 Ответ

9 голосов
/ 21 сентября 2011

Когда вы определяете подмодули, вы можете создавать и выпускать их все сразу с верхнего уровня.

Когда вы используете наследование во втором примере, вы можете использовать определения из родительского POM, определенного один раз,(Например, какие версии программного обеспечения использовать)

В последнем примере, когда одному модулю требуются ресурсы от другого модуля, вы можете добавить его в качестве зависимости, и он автоматически загрузит и включит его в путь сборки.

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